无法将Binding设置为驻留在TextBlock中的运行

时间:2010-12-19 02:59:19

标签: wpf binding textblock bindable

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

有没有任何一种解决这个问题的方法?

2 个答案:

答案 0 :(得分:3)

我还没有找到原因,但是如果没有它变得太尴尬,你就可以做到这一点:

<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 Bug,在{Binding}控件上解释Run

答案 1 :(得分:0)

找到一个奇怪的工作方式:

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