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

wpf – 为什么Run.Text默认绑定双向?

在.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}"/>

但为什么要解决呢?为什么认情况下运行绑定双向?

解决方法

只是一个猜测在这里

这可能是因为运行对象也在RichTextBox控件中使用,我可以想象这个控件可能想要认绑定TwoWay!

原文地址:https://www.jb51.cc/html/232780.html

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

相关推荐