Ich habe ein AddClientViewModel, das von 2 Ansichten referenziert wird (AddClientView und SuggestedAddressesView). Die AddClientView ist ein Formular, das ein Feld für eine Adresse enthält. Das Formular hat einen Validierungs-Button, der die eingegebene Adresse mit Geocoding validiert. Wenn mehr als eine Adresse zurückgegeben wird, wird die SuggestedAddressesView geöffnet.Öffnen/Schließen Ansicht von ViewModel
Hier ist, wie ich es derzeit tue:
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();
}
}
Hier ist der SuggestedAddressesView Konstruktor wo AddClientViewModel von ViewModelBase erbt
public SuggestedAddressesView(ViewModelBase viewModel)
{
InitializeComponent();
viewModel.ClosingRequest += (sender, e) => this.Close();
}
Das andere Problem, das ich habe, ist, Wenn ich OnClosingRequest() von AddClientViewModel ... aufrufen, werden sowohl AddClientView als auch SuggestedAddressesView geschlossen. Ich weiß, dass dies geschieht, weil beide Ansichten auf dasselbe ViewModel verweisen. Das ist nicht das Verhalten, das ich will. Ich möchte in der Lage sein, jedes Fenster unabhängig zu schließen.
Öffnet eine View aus der MVVM-Struktur von ViewModel und wie würde ich in der Lage sein, Fenster unabhängig voneinander zu schließen?
In Ordnung, das macht Sinn! Das Problem, das ich habe ist, dass ich die Informationen aus ** gesammelt möchten SuggestedAddressesView ** an die weitergegeben werden ** ** AddClientViewModel (daher, warum ich wurde mit dem 1 VM für 2 Views). Der Grund dafür ist, dass die in ** SuggestedAddressesView ** ausgewählte Adresse einem im ** AddClientViewModel ** definierten Client zugewiesen ist. – francisg3
@ francisg3 schau auf den Beispiel Link, den ich gepostet habe. Wenn Sie das Beispiel dort bekommen, öffnet das zweite 'Fenster 'Modal/Non-Modal Informationen zurück zum MainWindow. Dies ist der Prozess, den Sie auch für Ihre Anforderung verwenden würden. Sie würden Messenger verwenden, um eine Nachricht zu senden (hier wird die Nachricht die Daten sein, die Sie von SuggestedAddressViewModel zu AddClientViewModel senden möchten) – Viv