Невозможно установить привязку к прогону, который находится в TextBlock

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    DataContext="This is my text">
  <TextBlock>
    <Run Text="{Binding}"/>
  </TextBlock>
</Window>

Броски InvalidOperationException: "Двухстороннее связывание требует Path или XPath."

Определение Mode=OneWay, приводит к странной ошибке компилятора:

The tag 'Binding,' does not exist in XML namespace 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'.

Есть ли какой-нибудь xamly способ исправить это?

2 ответа

Решение

Я не нашел причину, почему, но вот как вы можете сделать это без неловкости:

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    DataContext="This is my text">
  <TextBlock>
    <Run Text="{Binding Path=.}"/>
  </TextBlock>
</Window>

По какой-то причине

<Run Text="{Binding}" />

вызывает ошибку времени выполнения, но

<Run Text="{Binding Path=.}" />

не. Причина может иметь какое-то отношение к тому, что когда вы "неоднозначны" со своими привязками, существуют определенные запасные варианты поведения для интерпретации привязки. Или, возможно, это настоящая ошибка MS с интерпретацией {Binding} на Run контроль.

Нашел странный обходной путь:

<Window
  x:Name="Me"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  DataContext="This is my text">
  <TextBlock>
    <Run Text="{Binding DataContext, ElementName=Me}"/>
  </TextBlock>
</Window>
Другие вопросы по тегам