Mam AddClientViewModel, do którego odwołują się 2 widoki (AddClientView i SuggestedAddressesView). AddClientView jest formularzem, który ma pole dla adresu. Formularz ma przycisk sprawdzania poprawności, który zatwierdza wprowadzony adres za pomocą funkcji Geokodowanie. Jeśli zostanie zwrócony więcej niż jeden adres, zostanie wyświetlony przycisk SuggestedAddressesView.Otwarty/zamknięty widok z ViewModel
Oto jak jestem obecnie robi to:
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();
}
}
Oto konstruktor SuggestedAddressesView gdzie AddClientViewModel dziedziczy ViewModelBase
public SuggestedAddressesView(ViewModelBase viewModel)
{
InitializeComponent();
viewModel.ClosingRequest += (sender, e) => this.Close();
}
Inny problem mam jest kiedy wołam OnClosingRequest() z AddClientViewModel ... zarówno AddClientView i SuggestedAddressesView zamyka. Wiem, że tak się dzieje, ponieważ oba widoki odwołują się do tego samego ViewModel. To nie jest zachowanie, którego pragnę. Chciałbym móc samodzielnie zamknąć okno.
Czy otwierasz widok z właściwej struktury ViewModel MVVM i jak mogę uzyskać możliwość niezależnego zamykania okien?
W porządku, to ma sens! Problem polega na tym, że chciałbym, aby informacje zebrane z ** SuggestedAddressesView ** były przekazywane do ** AddClientViewModel ** (stąd dlaczego używałem 1 VM dla 2 widoków). Powodem, dla którego to robię jest to, że adres wybrany w ** SuggestedAddressesView ** jest przypisany do klienta zdefiniowanego w ** AddClientViewModel **. – francisg3
@ francisg3 spójrz na przykładowy link, który zamieściłem. Jeśli dostaniesz tam przykład, Drugie 'Okno' otwiera Modal/Non-Modal przekazuje informacje z powrotem do MainWindow. Jest to proces, którego używałbyś również do swoich wymagań. W zasadzie używałbyś Messengera do wysyłania wiadomości (tutaj wiadomość będzie danymi, które chcesz przesłać z SuggestedAddressViewModel do AddClientViewModel) – Viv