我使用 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 模式创建保持自然绑定的用户控件(到父控件的 DataContext)?
编辑:
我得到了很多关于如何绑定到父母的答案,但我更早知道这一点。问题是 - 我如何通过 MVVM 模式(具有 ViewModel)创建 UserControl 并保持自然绑定 - 默认为父 DataContext。
我想要 ViewMoldel 并且仍然可以像这样绑定:
<local:SuperTextBox SuperValue="{Binding Test}"/>
可能吗?