假设我有一个MainWindow
和一个MainViewModel
,在这个例子中我没有使用MVVM Light或Prism。
在这个MainWindow
中,我想点击一个MenuItem
或Button
来打开一个NewWindow.xaml
而不是UserControl
。
我知道如何在ContentControl
或Frame
中使用UserControl
打开一个新的UserControl
。
<ContentControl Content="{Binding Path=DisplayUserControl,UpdateSourceTrigger=PropertyChanged}" />
代码
public ViewModelBase DisplayUserControl
{
get
{
if (displayUserControl == null)
{
displayUserControl = new ViewModels.UC1iewModel();
}
return displayUserControl;
}
set
{
if (displayUserControl == value)
{
return;
}
else
{
displayUserControl = value;
OnPropertyChanged("DisplayUserControl");
}
}
}
在MainWindow
的ResourceDictionary
中,我有:
<DataTemplate DataType="{x:Type localViewModels:UC1ViewModel}">
<localViews:UC1 />
</DataTemplate>
<DataTemplate DataType="{x:Type localViewModels:UC2ViewModel}">
<localViews:UC2 />
</DataTemplate>
问题在于我想要打开一个新的窗口
,而不是一个UserControl
。因此我使用了类似以下的代码:
private ICommand openNewWindow;
public ICommand OpenNewWindow
{
get { return openNewWindow; }
}
public void DoOpenNewWindow()
{
View.NewWindowWindow validationWindow = new View.NewWindow();
NewWindowViewModel newWindowViewModel = new NewWindowViewModel();
newWindow.DataContext = ewWindowViewModel;
newWindow.Show();
}
接着将 OpenNewWindow
绑定到一个 MenuItem
或 Button
上。
我知道这不是正确的方法,但正确的方法是什么呢?
谢谢!