将绑定从一个文本框复制到另一个文本框

时间:2012-10-19 12:05:18

标签: wpf wpf-controls

希望来自新手的一个简单的启动问题......

我有一个TextBox,其Text属性绑定到ViewModel和DependencyProperty。

当我点击TextBox时,我希望第二个TextBox(一个'Editor'TextBox)被赋予与第一个相同的绑定。结果是编辑第二个'Editor'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);
        }
    }

1 个答案:

答案 0 :(得分:2)

我可以想到两种方法

首先,您的SelectedText绑定了ViewModel中的EditorTextBox属性,并在点击任何其他TextBoxes时设置此值。为此,您可能需要类似AttachedCommandBehavior的内容,以便将ViewModel中的命令附加到TextBox的ClickFocus事件。

我能想到的另一种方法就是在代码隐藏中完成它。在每个TextBox的ClickFocus事件中,获取所选TextBox的BindingExpression的{​​{1}},并将绑定复制到TextProperty