假设我有 aMainWindow
和 a ,在这个例子中MainViewModel
我没有使用MVVM Light或Prism 。
在此MainWindow
我想单击 aMenuItem
或Button
打开 a NewWindow.xaml
not a UserControl
。
我知道如何使用它来在我现有的 Window 中UserControl
打开一个新的 a或 a 。UserControl
ContrntControl
Frame
<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 MenuItem
or Button
。
我知道这不是正确的方法,但是正确的方法是什么?
谢谢!