Невозможно установить привязку к прогону, который находится в TextBlock - PullRequest
2 голосов
/ 19 декабря 2010
<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: «Для двусторонней привязки требуется путь или XPath.»

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

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

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

Ответы [ 2 ]

3 голосов
/ 03 мая 2011

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

<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.

0 голосов
/ 19 декабря 2010

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

<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>
...