2014-09-19 74 views
0

這個問題是參考這個鏈接Opening new window in MVVM WPF
我想在某些服務中打開新窗口。 以下是我的代碼用MVVM打開多個窗口使用相同的viewmodel使用MVVM

這是我從視圖模型調用

public class WindowService:IWindowService 
{ 
    public void ShowWindow(object viewModel) 
    { 

     var win = new Window {Content = viewModel}; 
     win.Show(); 
    } 
} 

下面的窗口服務是我的App.xaml代碼

<DataTemplate DataType="{x:Type viewModel:MainViewModel}" > 
     <viewModel:ChildWindow /> 
    </DataTemplate> 

現在,這工作得很好具有不同的所有窗口的ViewModels。 但是,當我想要打開另一個使用相同視圖模型但視圖不同的窗口時,我無法在app.xaml中定義同一類型的數據模板。

如何打開多個具有相同viewmodel的新窗口? 我應該爲每個窗口創建不同的視圖模型嗎?

回答

0

我已經展示了另一種打開和關閉窗口的方法here

您可以添加DependencyProperty例如DataContextOpenCloseWindowBehavior,使用它來傳遞視圖模型,並在行爲代碼中將窗口的DataContext連接到此視圖模型。告訴我你是否需要更多幫助。

<local:OpenCloseWindowBehavior WindowType="local:YellowWindow" Open="{Binding YellowOpen, Mode=TwoWay}" DataContext="{Binding SomeViewModel}" /> 
相關問題