私は2つのビュー(AddClientViewとSuggestedAddressesView)によって参照されるAddClientViewModelを持っています。 AddClientViewはアドレスのフィールドを持つフォームです。フォームには、ジオコーディングを使用して入力したアドレスを検証する検証ボタンがあります。複数のアドレスが返された場合は、SuggestedAddressesViewが開きます。ViewModelのビューを開く/閉じる
AddClientViewModel:
private void ValidateExecute(object obj)
{
SuggestedAddresses = new ObservableCollection<DBHelper.GeocodeService.GeocodeResult>(GeoCodeTest.SuggestedAddress(FormattedAddress));
....
if (SuggestedAddresses.Count > 0)
{
var window = new SuggestedAddressesView(this);
window.DataContext = this;
window.Show();
}
}
をここでAddClientViewModelがViewModelBase
public SuggestedAddressesView(ViewModelBase viewModel)
{
InitializeComponent();
viewModel.ClosingRequest += (sender, e) => this.Close();
}
から継承SuggestedAddressesViewコンストラクタは、私が午前、他の問題がされている。ここ
は、私は現在、それをやっていることはどのようですAddClientViewModelからOnClosingRequest()を呼び出すと、AddClientViewとSuggestedAddressesViewの両方が終了します。私は、両方のビューが同じViewModelを参照しているため、これが起こることを知っています。これは私が望む行動ではありません。私は独立していずれかのウィンドウを閉じることができるようにしたいと思います。
ビューをViewModelの適切なMVVM構造から開いていますが、独立してウィンドウを閉じることができますか?
Command="{Binding CloseWindowCommand, Mode=OneWay}"
CommandParameter="{Binding ElementName=TestWindow}"
を使用すると、個々のビューを閉じることができ、これを使用することにより次のようにあなたは、パラメータを送信するよう
申し訳ありません。 **私は、** SuggestedAddressesView **から収集した情報を** AddClientViewModel **に渡すことを願っています(なぜ2つのビューに1つのVMを使用したのか)。これは、** SuggestedAddressesView **で選択されたアドレスが** AddClientViewModel **で定義されたクライアントに割り当てられているためです。 – francisg3
@ francisg3は私が掲示したリンクの例を見てください。そこに例があると、Modal/Non-Modalが開いた2番目の 'Window'が情報をMainWindowに返します。これは、お客様の要件にも使用するプロセスです。 Messengerを使用してメッセージを送信します(メッセージは、SuggestedAddressViewModelからAddClientViewModelに送信するデータになります) – Viv