は、私がMainWindow
とMainViewModel
を持っていると言うことができます、私は、この例ではMVVMライトまたはプリズムを使用していませんよ。
このMainWindow
またはButton
をクリックして、NewWindow.xaml
ではなくUserControl
を開きます。
UserControl
でこれを使用して、ContrntControl
またはFrame
の既存のウィンドウに新しいUserControl
を開く方法を知っています。オープンMVVM
<ContentControl Content="{Binding Path=DisplayUserControl,UpdateSourceTrigger=PropertyChanged}" />
MainWindow
ためResourceDitionary
で
public ViewModelBase DisplayUserControl
{
get
{
if (displayUserControl == null)
{
displayUserControl = new ViewModels.UC1iewModel();
}
return displayUserControl;
}
set
{
if (displayUserControl == value)
{
return;
}
else
{
displayUserControl = value;
OnPropertyChanged("DisplayUserControl");
}
}
}
コード私が持っている:
<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();
}
、その後MenuItem
またはButton
にバインドOpenNewWindow
:だから私はこのようないくつかのコードを使用します。
これは正しい方法ではありませんが、これを行う正しい方法は何ですか?
ありがとうございます!
なぜそれが正しい方法ではないと思いますか?アクションを実行しているICommandバインディングがあります。 (正確そうですか?) – sircodesalot
MainViewMOdelのDoOpeNewWindow()メソッドのインスタンスを作成したので、NewWindowViewModelクラスに依存するため、ViewModelをテストするのが問題になります。 –