在.NET 4.0中,
Run.Text是可绑定的。所以我试图绑定它:
<Run Text="{Binding displayText}"/>
但是当我跑的时候,我收到一个错误:“TwoWay或OneWayToSource绑定无法在只读属性’displayText’类型’SomeNamespace.someClass’。
我的displayText属性确实是只读的,但是RunBlack中的Run-Runs也是不可编辑的。那么为什么我会收到这个错误?我用dotPeek挖掘PresentationFramework,确定:
public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text",typeof (string),typeof (Run),(PropertyMetadata) new FrameworkPropertyMetadata((object) string.Empty,FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,new PropertyChangedCallback(Run.OnTextPropertyChanged),new CoerceValueCallback(Run.CoerceText)));
第四行,简单的一天指定Run.Text默认绑定双向,这没有任何意义,似乎是一个明显的设计错误。
当然,这很容易解决:
<Run Text="{Binding displayText,Mode=OneWay}"/>