Gibt es eine intelligente Möglichkeit für mich herauszufinden, was WPF-Fenster mit welchem ViewModel verknüpft ist?Fenster suchen, das einem ViewModel in WPF und MVVM/MVVMLight zugeordnet ist
Ich baue gerade einen Dialog-Service und ich muss den Besitzer auf ein bestimmtes Fenster einstellen. Ich bin gerade dabei, die .Owner
Eigenschaft auf Application.Current.MainWindow
hartcoding, aber ich dachte, ich würde hier überprüfen, ob jemand etwas ähnliches getan hatte und hatte eine schlau davon, dies zu tun.
Ein Weg wäre, den Typ Window
dem ViewModel in einem Wörterbuch zuzuordnen, das das ViewModel als Schlüssel in meinem ViewModelLocator verwendet, wenn es initialisiert wird? Aber was dann?
meine MainViewModel Unter der Annahme, nennt den folgenden Code
_dialogService.ShowDialog(settingsWindowViewModel);
ich eine der Eigenschaften meiner SettingsWindowViewModel
als solche weitergeben möchte:
SettingsWindowViewModel settingsWindowViewModel = new SettingsWindowViewModel
{
Title = "Settings",
Owner = "MainViewModel" or //this;
}
und in der Definition des DialogService, die ShowDialog
würde so definiert werden:
public bool? ShowDialog(IDialogWindowViewModel dialogViewModel)
{
var win = new WindowDialog
{
Title = dialogViewModel.Title,
Owner = GetWindowByViewModel(dialogViewModel.Owner);
}
}
Wo das GetWindowByViewModel auf das Wörterbuch zugreifen wird, das die Fenstertypen enthält, aber ich bin nicht sicher, wie das tatsächliche Fenster abgerufen wird, da ich nur den "Typ" habe.
Wo Besitzer ist das ViewModel mit einem bestimmten Fenstertyp zugeordnet.
Ich habe etwas ähnliches wie die oben in einem Projekt gesehen, das Unity
wurde mit, aber a) Ich kann mich nicht erinnern, wo ich das sah, und b) Ich verwende MVVMLight
statt Unity
.
Irgendwelche Vorschläge zur Handhabung eines solchen Szenarios?