附加属性的多种用途不起作用

时间:2010-12-20 21:57:33

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

我的猜测是我不能正确理解附加属性。我正在尝试将RichTextBox上的FlowDocument转换为视图模型中的HTML字符串属性。我有两个使用我的RichTextBoxAssistant类的RichTextBox(感谢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 boundDocumentChanged中的值时,rtb_description方法会被点击,但是当我更改rtb_descriptionHowTo中的值时却不会。当我更改文字或对rtb_descriptionHowTo做任何事情时,我从未到达boundDocumentChanged。这是RichTextBoxAssistant是静态类的结果吗?如何修复它以便我可以将RichTextBoxAssistant与多个RichTextBox一起使用?

1 个答案:

答案 0 :(得分:0)

ColinE有正确的想法:我尝试从我的第一个RichTextBox中删除附加属性,并且更改第二个RichTextBox的值仍然没有让我进入boundDocumentChanged。事实证明我的视图模型中的DescriptionHowTo属性为null,而不是HTML字符串。当我将其初始化为@"<html><body></body></html>"时,事情就开始起作用了。