微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么默认情况下Run.Text是双向绑定的?

如何解决为什么默认情况下Run.Text是双向绑定的?

| 在.NET 4.0中,Run.Text是可绑定的。所以我试图绑定它:
<Run Text=\"{Binding displayText}\"/>
但是当我运行时,出现了一个错误:\“ TwoWay或OneWayToSource绑定不能在类型为'SomeNamespace.someClass \'的只读属性\'displayText \'上运行。 我的displayText属性确实是只读的,但“运行”也是这样-运行在TextBlocks中,您无法编辑。那么,为什么会出现此错误?我用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}\"/>
但是,为什么我必须解决它?为什么认情况下运行会双向绑定?     

解决方法

        这里只是一个猜测: 可能是因为
RichTextBox
控件中还使用了
Run
对象,并且我可以想象此控件可能默认要绑定
TwoWay
!     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。