0

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

<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
        )
    );

问题是boundDocumentChanged当我更改我的第一个 RichTextBox 中的值时,该方法会被命中,rtb_description但当我更改rtb_descriptionHowTo. 当我更改文本或做任何事情时rtb_descriptionHowTo,我从来没有达到boundDocumentChanged。这是RichTextBoxAssistant作为静态类的结果吗?如何修复它以便可以RichTextBoxAssistant与多个 RichTextBox 一起使用?

4

1 回答 1

0

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

于 2010-12-20T22:32:37.013 回答