【问题标题】:multiple uses of attached property does not work附加财产的多次使用不起作用
【发布时间】:2010-12-20 21:57:33
【问题描述】:

我的猜测是我没有正确理解附加属性。我正在尝试将 RichTextBox 上的 FlowDocument 转换为我的视图模型中的 HTML 字符串属性。我有两个 RichTextBoxes 正在使用我的 RichTextBoxAssistant 类(感谢 this blog post):

<RichTextBox x:Name="rtb_description" 
    local:RichTextBoxAssistant.BoundDocument="{Binding MyVM.Description,
        ValidatesOnDataErrors=True}"/>

<RichTextBox x:Name="rtb_descriptionHowTo"
    local:RichTextBoxAssistant.BoundDocument="{Binding MyVM.DescriptionHowTo,
        ValidatesOnDataErrors=True}" />

在我的RichTextBoxAssistant 类中,我有这个依赖属性:

public static readonly DependencyProperty BoundDocument =
    DependencyProperty.RegisterAttached(
        "BoundDocument",
        typeof(string),
        typeof(RichTextBoxAssistant),
        new FrameworkPropertyMetadata(
            null,
            FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
            boundDocumentChanged
        )
    );

问题是当我更改我的第一个 RichTextBox rtb_description 中的值时,boundDocumentChanged 方法会被命中,但当我更改 rtb_descriptionHowTo 中的值时不会。当我更改文本或对rtb_descriptionHowTo 执行任何操作时,我从未到达boundDocumentChanged。这是RichTextBoxAssistant 是静态类的结果吗?如何修复它以便我可以将 RichTextBoxAssistant 与多个 RichTextBox 一起使用?

【问题讨论】:

  • 如果删除第一个富文本框上的绑定,是否会触发第二个富文本框上的事件?
  • 科林:好问题。它没有,所以现在我正在研究其他问题。打赌它毕竟不是 RichTextBoxAssistant 造成的问题!
  • 会不会是DescriptionHowTo 不是DependencyProperty
  • Vlad: DescriptionHowTo 不是 DependencyProperty,但它的设置器确实调用了PropertyChanged(它在视图模型中)。

标签: c# wpf xaml dependency-properties attached-properties


【解决方案1】:

ColinE 有正确的想法:我尝试从我的第一个 RichTextBox 中删除附加属性,但更改第二个 RichTextBox 的值仍然没有让我进入boundDocumentChanged。结果我的视图模型中的 DescriptionHowTo 属性为空,而不是 HTML 字符串。当我将它初始化为@"&lt;html&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;" 时,一切都开始起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2018-12-25
    • 2016-02-26
    • 2012-10-13
    相关资源
    最近更新 更多