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

上一篇: Viewmodel commandbinding

下一篇: Cant access nested wpf item command by mvvm