Невозможно установить привязку к прогону, который находится в 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>