Viewmodel命令绑定
Iam使用MVVM模型,并且我在WPF主窗口中有三个用户控件,并且每个用户控件都将datacontext设置为xaml中的不同视图模型。 主窗口还附加到datacontext中的不同视图模型。 主窗口有三个按钮,应通过命令绑定绑定,我们如何通过xaml将主窗口按钮绑定到相应的用户控件视图模型Icommand?
很难判断这是否是一个好的解决方案,因为有很多关于应用程序体系结构的缺失细节。
基于前提“我有一个包含3个用户控件的窗口,并且我希望窗口上的按钮可以激活控件的视图模型上的命令”,一种解决方案可能是:
<Window>
<UserControl Name="Control1" />
<UserControl Name="Control2" />
<UserControl Name="Control3" />
<Button Command="{Binding ElementName="Control1", Path="DataContext.Cmd"}" />
<Button Command="{Binding ElementName="Control2", Path="DataContext.Cmd"}" />
<Button Command="{Binding ElementName="Control3", Path="DataContext.Cmd"}" />
</Window>
这有点主观,但在我看来,viewmodels不应该服务于更多的观点。
MainWindow的viewmodel应该完全独立于UserControl的模型。 我建议使用发布/订阅者模式通过应用程序发送“事件”来处理广泛使用的功能(请参阅Event Aggregator)。
如果你不能通过从MainWindow的DataContext直接绑定来访问ViewModels(例如,如果三个ViewModel不在MainWindow的ViewModel中),你可以这样做:
<Button
Name="Button1"
DataContext="{Binding DataContext, ElementName=UserControl1}"
/>
如果我很好地理解你的问题,这应该可行。
链接地址: http://www.djcxy.com/p/56145.html