在我的XAML中,我有一个UserControl1
,我试图绑定到MainWindowViewModel
的{{1}}:
MainWindow
<ControlLib:UserControl1 Hotzenplotz="{Binding Raeuber, ElementName=vm}" />
是Hotzenplotz
DependenyProperty
。 UserControl1
是Raeuber
的属性。
问题是MainWindowViewModel
,因为我不希望XAML在ElementName=vm
中查找属性,而是在UserControl1
如果我像这样绑定MainWindowViewModel
,那么一切都很好看:
MainWindowViewModel
不幸的是我无法即时实例化<Window.DataContext>
<local:MainWindowViewModel x:Name="vm" />
</Window.DataContext>
,我需要从代码端绑定它。但后来我无法弄清楚如何将MainWindowViewModel
属性命名为DataContext
以供将来参考。
修改
我这样解决了。我在vm
MainWindow
并在<Window x:Name="mw"
属性
DataContext
但这真的是正确的方法吗?
修改2
此处提供了工作代码:http://doena-soft.de/tmp/SubControls.zip
答案 0 :(得分:0)
好的,我在这里找到了解决方案:Binding between my usercontrol and ViewModel
我将UserControl1
绑定到自己的DataContext
,就像这样:
DataContext="{Binding RelativeSource={RelativeSource Self}}"
相反,现在我将UserControl1
放在自己的XAML中,名称为“uc”,并将所有绑定都引用到此元素名称。
之前UserControl1
内:
<Label x:Name="label1" Content="{Binding Hotzenplotz}" />
之后
<Label x:Name="label1" Content="{Binding Hotzenplotz, ElementName=uc}" />
为了完整起见,这是第二个解决方案:http://doena-soft.de/tmp/SubControls_better.zip