我的猜测是我不能正确理解附加属性。我正在尝试将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一起使用?
答案 0 :(得分:0)
ColinE有正确的想法:我尝试从我的第一个RichTextBox中删除附加属性,并且更改第二个RichTextBox的值仍然没有让我进入boundDocumentChanged
。事实证明我的视图模型中的DescriptionHowTo
属性为null,而不是HTML字符串。当我将其初始化为@"<html><body></body></html>"
时,事情就开始起作用了。