2013-07-18 243 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}" 
/> 

這如果我能很好地理解你的問題,就應該有效。