Was ich brauche, ist eine Möglichkeit, programmgesteuert zu finden, welches ViewModel (in MVVM) dem entspricht, was gerade in der App angezeigt wird.UWP/C# - Wie kann ich feststellen, welche Art von ViewModel gerade angezeigt wird?
Ich habe ein ViewModel, das eine Comm-Handler-Methode enthält. Dieser Comm-Handler wird von einem externen Thread aufgerufen. Wenn dies passiert, muss ich eines von zwei Dingen tun: Wenn die Ansicht, die der VM entspricht, auf dem Bildschirm ist, muss ich den Inhalt der Nachricht analysieren und auf dem Bildschirm anzeigen. Wenn die der VM entsprechende Ansicht nicht auf dem Bildschirm angezeigt wird, muss die Nachricht für einen späteren Zeitpunkt gespeichert werden.
Zum Beispiel, wenn ich eine DisplayPage.xaml und eine DisplayPageViewModel.cs habe, und die App zeigt derzeit den Inhalt von DisplayPage, möchte ich etwas ähnliches wie der Code unten, um die spezifische Aufgabe zu erreichen.
if (<code to find VM type here> == typeof(DisplayPageViewModel)){
//do viewmodel specific task
}
Wenn jedoch die App zur Zeit wurde MainPage.xaml Anzeige, ich will nicht um den Code auszuführen.
Verwenden Sie das „ist“ Schlüsselwort den Typ des Datacontext zu überprüfen. Wenn DataContext DisplayPageViewModel ist {} andernfalls if (DataContext is ....) {} – Mangist
DataContext ist normalerweise ein View-Feld. Gibt es eine Möglichkeit, die aktuelle Ansicht, die dem Benutzer angezeigt wird, zu erhalten? Wie ich unten in einem Kommentar gesagt habe, gibt es keinen DataContext, wo dieses Code-Snippet ausgeführt wird. – Sonicarrow
wo läuft der Code-Snippet? – Mangist