将UI元素绑定到UI元素,如Textbox到Textbox

时间:2014-07-21 08:26:21

标签: wpf data-binding

我有像文本框这样的UI元素,我想将它们绑定到ViewModel。我需要访问文本框的许多属性,如text-或IsEnabled-property。 是否有可能将文本框直接绑定到ViewModel中的另一个文本框及其所有属性,而不是将每个属性绑定到属性?

1 个答案:

答案 0 :(得分:0)

是的,使用ElementName,但您仍会绑定所有属性。

<!-- Bound to ViewModel -->
<TextBox Name="tbOne" IsEnabled="{Binding OneIsEnabled}" Text={Binding TextOne}/>

<TextBox Name="tbTwo" IsEnabled="{Binding ElementName=tbOne, Path=IsEnabled}" Text={Binding ElementName=tbOne, Path=Text}/>

没有内置方法将TextBox的所有依赖项属性绑定到另一个。就个人而言,我更喜欢直接绑定到ViewModel。

另一种解决方案是创建一个UserControl,在内部克隆带有所有绑定的TextBox:

<CloneControl Target="{Binding ElementName=tbOne}"/>

这里,ControlControl将检查目标,并具有创建新TextBox的代码,并在代码中设置绑定。这只有在您经常这样做时才有用,而且要为UI树添加另一级别的控件,需要付出轻微的性能代价。