3

うまくいけば、初心者からの簡単な初心者の質問...

Text プロパティが ViewModel と DependencyProperty にバインドされている TextBox があります。

TextBox をクリックすると、2 番目の TextBox (「エディタ」TextBox) に最初のバインディングと同じバインディングが割り当てられます。結果として、2 番目の「Editor」TextBox を編集すると、最初の TextBox が更新されます。

最終的には、任意の TextBox をクリックして、同じ 'Editor' TextBox で編集できるようにしたいと考えています。


オプション2を使用した私のソリューション...ありがとう!!:

    private void m_sourceTextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        TextBox sourceTextBox = sender as TextBox;
        if (null != sourceTextBox)
        {
            BindingExpression sourceBindExpression = sourceTextBox.GetBindingExpression(TextBox.TextProperty);

            if (sourceBindExpression != null && sourceBindExpression.ParentBinding != null && sourceBindExpression.ParentBinding.Path != null)
                m_editorTextBox.SetBinding(TextBox.TextProperty, sourceBindExpression.ParentBinding);
        }
    }
4

1 に答える 1

2

これを行うには2つの方法が考えられます

SelectedText1 つ目は、ViewModel にバインドされているプロパティEditorTextBoxを設定し、他のいずれかをクリックしたときにこの値を設定することですTextBoxesこれが機能するには、おそらくAttachedCommandBehaviorのようなものが必要になるでしょう。これにより、コマンドを ViewModel から TextBox のClickorFocusイベントにアタッチできます。

私が考えることができる他の方法は、分離コードで行うことです。各 TextBoxのClickまたはFocusイベントでBindingExpression、選択した TextBox の を取得しTextProperty、バインディングを にコピーしEditorTextBox.Textます。

于 2012-10-19T12:26:07.270 に答える