我有RichEditBox和带有DependencyPropert的类:
public class RichTextC : DependencyObject
{
public static string GetRichText(DependencyObject obj)
{
return (string)obj.GetValue(RichTextProperty);
}
public static void SetRichText(DependencyObject obj, string value)
{
obj.SetValue(RichTextProperty, value);
}
public static readonly DependencyProperty RichTextProperty = DependencyProperty.Register("RichText", typeof(string), typeof(RichTextC), new PropertyMetadata(string.Empty, callback));
private static void callback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var reb = (RichEditBox)d;
reb.Document.SetText(TextSetOptions.FormatRtf, (string)e.NewValue);
}
}
这是我在XAML文件中的RichEditBox:
<RichEditBox local:RichTextC.RichText="{Binding MyRichText, Mode=TwoWay}"/>
问题是,View模型可以通知View,但是当我在RichEditBox中更改文本时,它不会通知View Model。我的意思是,绑定只能以一种方式工作,从View Model到View,但是从View到View Model不起作用。
如何将其更改为双向绑定开始工作?
答案 0 :(得分:1)
当RichEditBox的文档文本发生更改时,您需要连接代码以设置RichText属性。为此,请处理RichEditBox.TextChanged事件以更新RichText属性。您需要包含一些代码以防止RichText属性在处理TextChanged事件时更新RichEditBox的Document文本(反之亦然)以防止循环。
答案 1 :(得分:1)
因为我无法发表评论,我必须重写我的答案! : - (
<local:RichTextBoxExtended RtfText="{Binding MyRichText, Mode=TwoWay}"/>
我希望这会有所帮助......