【发布时间】: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