0

私はWPFプロジェクトに取り組んでいます。そして、依存関係プロパティを作成しました。この依存関係プロパティは、RichTextBox.Selection.Textプロパティをbindeableにすることを目的としています。

しかし、私ができないのはRichTextBox.Selection.Text、同じ DP を使用してデータを取得および設定することです。

これは、バインディングを使用してデータを取得したい場合にのみ使用したコードです。RichTextBox.Selection.Text

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 クラスからデータを送信できません。

したがって、ViewModelからプロパティにデータを設定するだけの場合は、次のRichTextBox.Selection.Textコードを使用しました。

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;
    }

では、同じ依存関係プロパティを使用してデータを取得および設定できるようにするにはどうすればよいでしょうか?

誰かが私を助けてくれることを願っています。

4

1 に答える 1

1

入力コントロールのテキストを VM のプロパティにバインドする代わりに、添付プロパティをそれにバインドし、その添付プロパティの値を変更して、入力コントロールのテキストを設定します。

つまり、入力コントロールのテキストの変更を監視するものは何もありません。

編集:

あなたはまだやっています:

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

ただし、への変更の通知はありませんinstance.Selection.Text

于 2012-07-01T00:27:03.507 に答える