Ho un AddClientViewModel a cui fa riferimento 2 visualizzazioni (AddClientView e SuggestedAddressesView). AddClientView è un modulo con un campo per un indirizzo. Il modulo ha un pulsante di convalida che convalida l'indirizzo inserito utilizzando Geocoding. Se viene restituito più di un indirizzo, si apre SuggestedAddressesView.Apri/Chiudi vista da ViewModel
Ecco come Attualmente sto facendo:
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();
}
}
Ecco il costruttore SuggestedAddressesView dove AddClientViewModel eredita da ViewModelBase
public SuggestedAddressesView(ViewModelBase viewModel)
{
InitializeComponent();
viewModel.ClosingRequest += (sender, e) => this.Close();
}
L'altro problema che sto avendo è quando chiamo OnClosingRequest() da AddClientViewModel ... si chiude sia AddClientView che SuggestedAddressesView. So che questo accade perché entrambe le viste fanno riferimento allo stesso ViewModel. Questo non è il comportamento che voglio. Mi piacerebbe essere in grado di chiudere indipendentemente una finestra.
Sta aprendo una vista dalla struttura MVVM corretta di ViewModel e come potrei fare per poter chiudere le finestre in modo indipendente?
OK, questo ha senso! Il problema che sto avendo è che mi piacerebbe che le informazioni raccolte da ** SuggestedAddressesView ** passassero al ** AddClientViewModel ** (quindi perché stavo usando 1 VM per 2 Visualizzazioni). Il motivo per cui lo sto facendo è che l'indirizzo selezionato in ** SuggestedAddressesView ** è assegnato a un client definito in ** AddClientViewModel **. – francisg3
@ francisg3 guarda il link di esempio che ho pubblicato. Se si ottiene l'esempio, il secondo 'Window' ha aperto Modal/Non-Modal trasferisce le informazioni alla MainWindow. Questo è il processo che useresti anche per il tuo requisito. Ti piacerebbe usare Messenger per inviare un messaggio (qui il messaggio saranno i dati che vuoi inviare da SuggestedAddressViewModel a AddClientViewModel) – Viv