首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RichEditBox双向绑定不起作用[Windows ]

RichEditBox双向绑定不起作用[Windows ]
EN

Stack Overflow用户
提问于 2015-03-07 00:12:31
回答 2查看 423关注 0票数 0

我有RichEditBox和DependencyPropert的类:

代码语言:javascript
复制
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:

代码语言:javascript
复制
<RichEditBox local:RichTextC.RichText="{Binding MyRichText, Mode=TwoWay}"/>

问题是,视图可以由视图模型通知,但是当我在RichEditBox中更改文本时,它不会通知视图模型。我的意思是,绑定只在一个方面起作用,从一个视图模型到另一个视图,但是从视图到视图模型不起作用。

如何将其改为双向绑定开始工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-11 08:34:18

因为我不能评论,所以我必须重写我的答案!

  1. 创建一个类并将其命名为RichEditBoxExtended
  2. 将类代码替换为来自WinRt: Binding a RTF String to a RichEditBox的代码(请重新复制我更改了类的可见性)
  3. 转到XAML并输入:<local:RichTextBoxExtended RtfText="{Binding MyRichText, Mode=TwoWay}"/>

希望这能帮上忙..。

票数 1
EN

Stack Overflow用户

发布于 2015-03-08 05:55:12

当RichEditBox的文档文本发生更改时,您需要连接代码来设置RichText属性。为此,请处理RichEditBox.TextChanged事件以更新RichText属性。您需要包含一些代码,以防止RichText属性在处理TextChanged事件时更新RichEditBox的文档文本(反之亦然)以防止循环。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28909808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档