2013-07-18 46 views
0

Iam使用MVVM模型,我在WPF主窗口中有三个用户控件,并且每个用户控件都将datacontext设置为xaml中的不同视图模型。 主窗口还附加到datacontext中的不同viewmodel。主窗口有三个按钮,应通过命令绑定绑定,我们如何通过xaml将主窗口按钮绑定到相应的用户控件视图模型Icommand?MVVM WPF - Viewmodel命令绑定

+0

如果在DataContext对每个用户控件来说都是正确的,它应该是非常简单的..如果你需要调用“远程”命令,请尝试一个消息框架。 –

回答

0

很难判断这是否是好的解决方案,因为有很多关于应用程序体系结构的缺失细节。

基于一个前提,“我有一个包含3个用户控件窗口,我希望窗口激活控件的的ViewModels命令的按钮”,一种解决方案可能是:

<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> 
0

这有点主观,但在我看来,viewmodels不应该提供更多的一个视图。

MainWindow的viewmodel应该完全独立于UserControl的模型。我建议使用发布/订阅者模式通过应用程序发送处理广泛使用的功能的“事件”(请参阅​​Event Aggregator)。

0

如果无法通过直接结合在主窗口的DataContext的访问的ViewModels(即如果三米的ViewModels是不是在主窗口的视图模型),你可以这样做:

<Button 
    Name="Button1" 
    DataContext="{Binding DataContext, ElementName=UserControl1}" 
/> 

这如果我能很好地理解你的问题,就应该有效。