0

我正在开发一个 WPF 项目。我刚刚创建了一个依赖属性。此依赖属性旨在使RichTextBox.Selection.Text属性可绑定

但我不能做的是RichTextBox.Selection.Text使用相同的 DP 获取和设置数据。

如果我只想从我的RichTextBox.Selection.Textusing 绑定中获取数据,这是我使用的代码:

public class MyRichTextBox: RichTextBox
{

   public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
            "Text",
            typeof(string),
            typeof(MyRichTextBox),
            new PropertyMetadata(
                TextPropertyCallback));

    public string Text
    {
        get { return (string)GetValue(TextProperty); }
        set { SetValue(TextProperty, value); }
    }

    public MyRichTextBox()
    {         
        this.TextChanged += new TextChangedEventHandler(MyRichTextBox_TextChanged);
    }

    void MyRichTextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        Text = this.Selection.Text;
    }

它工作得很好,但是使用这段代码我无法从我的 ViewModel 类中发送任何数据。

所以,如果我只想RichTextBox.Selection.Text从我的 ViewModel将数据设置为属性,我使用以下代码:

public class MyRichTextBox: RichTextBox
{
    public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
        "Text",
        typeof(string),
        typeof(MyRichTextBox),
        new PropertyMetadata(
            TextPropertyCallback));

    public string Text
    {
        get { return (string)GetValue(TextProperty); }
        set { SetValue(TextProperty, value); }
    }

    private static void TextPropertyCallback(DependencyObject controlInstance, DependencyPropertyChangedEventArgs args)
    {
        MyRichTextBox instance = (MyRichTextBox)controlInstance;
        instance.Selection.Text = (String)args.NewValue;
    }

那么,如果我希望能够使用相同的依赖属性获取和设置数据,我该怎么办???

希望有人可以帮助我,提前tahnk你

4

1 回答 1

1

您没有将输入控件的文本绑定到 VM 的属性,而是将附加属性绑定到它,并且在该附加属性的值发生更改时,您设置了输入控件的文本。

换句话说 - 没有监控输入控件文本的更改。

编辑:

你还在做:

instance.Selection.Text = (String)args.NewValue;

但是,没有通知更改为instance.Selection.Text

于 2012-07-01T00:27:03.507 回答