我使用MVVM模式,所以我的自定义控件包含View和ViewModel。
ViewModel通过DataContext属性与View连接。这会导致绑定问题。为什么呢?
假设有这样一种情况:
我创建了一个新的用户控件-例如-"SuperTextBox"。它有一个属性"SuperValue"。
现在我做了这样的事情:
<Window>
<Window.DataContext>
<vm:WindowViewModel/>
</Window.DataContext>
<local:SuperTextBox SuperValue="{Binding Test}"/>
</Window>
我认为"绑定过程"将SuperTextBox.SuperValue与Window.DataContext.Test连接起来,但实际上,"绑定过程"将SuperTextBox.SuperValue与SuperTextBox.DataContext.Test连接起来,这对我来说是不自然和具有误导性的。
像"TextBox"这样的其他控件,我可以使用上述方式,因为它们没有它们自己的DataContext。
如何使用MVVM模式创建UserControl并保持自然绑定(到父控件的DataContext)?
编辑:
我得到了许多关于绑定到父级的答案,但这是我早就知道的。 问题是 - 如何通过MVVM模式创建UserControl(具有ViewModel),并保持自然绑定 - 默认绑定到父级DataContext。
我想拥有ViewModel,仍然可以像这样进行绑定:
<local:SuperTextBox SuperValue="{Binding Test}"/>
"是可能的吗?"