假设我有 aMainWindow和 a ,在这个例子中MainViewModel我没有使用MVVM Light或Prism 。
在此MainWindow我想单击 aMenuItem或Button打开 a NewWindow.xamlnot a UserControl。
我知道如何使用它来在我现有的 Window 中UserControl打开一个新的 a或 a 。UserControlContrntControlFrame
<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");
}
}
}
在我有ResourceDitionary:MainWindow
<DataTemplate DataType="{x:Type localViewModels:UC1ViewModel}">
<localViews:UC1 />
</DataTemplate>
<DataTemplate DataType="{x:Type localViewModels:UC2ViewModel}">
<localViews:UC2 />
</DataTemplate>
问题是我想开一个新的Window,而不是一个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到 a MenuItemor Button。
我知道这不是正确的方法,但是正确的方法是什么?
谢谢!