WPF MVVMを使用しています。 メインウィンドウがあり、ボタンのクリックにはほとんどユーザーコントロールがありません。ビューとビューモデルを表示しています。メインウィンドウのボタンをクリックすると、別のビューに移動できます。ナビゲーションコマンドがメインウィンドウのビューモデルにのみ存在するためです。しかし、異なる視点(ユーザコントロール)にあるとき。どのように私はviewmodelからナビゲートすることができます。WPF MVVMビューのリダイレクトをViewModelから
MainwindowViewmodel
public class MainWindowViewModel : BindableBase, INotifyPropertyChanged
{
private StudyViewModel _studyViewModel = new StudyViewModel();
private ImageCaptureViewModel _imageCaptureViewModel = new ImageCaptureViewModel();
private RegisterViewModel _registerViewModel = new RegisterViewModel();
private BindableBase _CurrentViewModel;
public BindableBase CurrentViewModel
{
get { return _CurrentViewModel; }
set { SetProperty(ref _CurrentViewModel, value); OnPropertyChanged("_CurrentViewModel"); }
}
public MainWindowViewModel()
{
NavCommand = new RelayCommand<string>(onNav);
onNav("study");
}
//This is the command am using in xaml to redirect view.
public RelayCommand<string> NavCommand { get; private set; }
private void onNav(string destination)
{
switch (destination)
{
case "study":
CurrentViewModel = _studyViewModel;
break;
case "capture":
CurrentViewModel = _imageCaptureViewModel;
break;
case "register":
CurrentViewModel = _registerViewModel;
break;
default:
CurrentViewModel = _studyViewModel;
break;
}
}
}
RegisterViewModel
public void RegisterPatient(string action)
{
if (action == "addnew")
{
}
else
{
if (StartImaging)
{
//Have to redirect to other screen.
}
}
var a = PatientToAdd;
MessageBox.Show("triggered");
}
マウスイベントでコマンドを追加していた場合、それは私がのviewmodel
RegisterViewからリダイレクトする方法を何もいけない.Butリダイレクトされていません.xaml
<DataGrid.InputBindings>
<MouseBinding Command="{Binding DataContext.NavCommand,RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
MouseAction="LeftDoubleClick"
CommandParameter="historyimage"/>
</DataGrid.InputBindings>
はuが実際に欲しいもの、具体的に? – AnjumSKhan
@AnjumSKhan。メインウィンドウは、対応するビューモデル(MainWindowViewModel)を持つ私のホーム画面です.Onボタンは、対応するviewmodel(userListViewModel)を持つユーザーリストをロードしています。今私はユーザービューでは、私は別のビューにリダイレクトする必要がありますユーザービューでボタンをクリックしています。リダイレクションコードはmainwindowviewmodelにあります。そのメソッドにアクセスしてビューを変更する方法。私はin.xamlというコードを書いてボタンのクリックをリダイレクトすることができます。しかし、私はviewmodelからのリダイレクトをしたい。 –
[最小、完全、および確認可能](http://stackoverflow.com/help/mcve)の例を入力してください。 –