Wie rufen Sie die Methode-in-Fenster (.xaml.cs) von viewmodel - (.cs) ohne Einführung neuer Referenzen in wpf
Ich bin auf der Suche nach eine einfache Möglichkeit zum aufrufen einer Methode in meiner Main-Fenster, aber ich möchte es nennen, die aus meiner Sicht Modell. Im Grunde bin ich auf der Suche für einige, der König ".Eltern - " Art der Sache zu stellen, die in die View-Modell-Referenz des Hauptfensters.
Oder, wenn Sie möchten, heraus zu überprüfen, der Grund, warum ich dies tun wollen und sagen Sie mir, einen anderen Weg zu gehen über mein problem:
Arbeite ich mit einer app, die ständig bekommt Informationen gefüttert. Im viewmodel werden die Informationen verarbeitet. Ich möchte, um eine Benachrichtigung jedes mal, wenn eine information kommt, die erfüllt gewisse Qualifikation.
Anfangs hatte ich ein Wörterbuch in der viewmodel, dass die gespeicherten Informationen über die Informationen, und ich aufgerufen, Wörterbuch im Hauptfenster, so dass ich könnte die Fenster, Blitz und senden weitere Meldungen. Aber ich war immer Probleme mit dem viewmodel-Wörterbuch wird kontinuierlich verändert, während ich auf es in die MainWindow.
Sorry, wenn diese Frage klingt dumm. Ich habe gerade angefangen mit WPF zwei Monaten, und habe keinen großen hintergrund in der Programmierung auch vor, dass, entweder.
Danke @nekizalb , ich bin der überprüfung heraus, dass der thread jetzt
InformationsquelleAutor | 2013-11-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
VM sollte "wissen" nichts von Ihrer Ansicht oder Fenster, die Art, wie VM in der Regel "kommuniziert" mit V in WPF/MVVM ist von rasing Veranstaltungen. So VM bleibt unwissend/entkoppelt von der V und da die VM schon
DataContext
V es ist nicht schwer, abonnieren Sie VM-Ereignis.Beispiel:
VM:
V:
Das ist ein Teil des MVVM Frameworks, die ich verwenden als Einfache MVVM Toolkit. Das MVVM-Implementierung ist viel einfacher, wenn du die frameworks wie die, die ich erwähnt oder MVVM Light. Man könnte aber schreiben Sie Ihre eigene version von NotificationEventArgs da die Unterschrift ist so einfach wie die öffentliche Klasse NotificationEventArgs : EventArgs { public NotificationEventArgs(); public NotificationEventArgs(string message); public string Message { get; protected set; } }
Das ist perfekt. Danke @Dean. Ich werde upvote Ihre Antwort, sobald ich genug Ruf (Das war mein Erster post auf stackoverflow)
Ich auch don ' T haben Zugriff zu Benachrichtigen :/ @Dean
Ja, das ist alles Teil des Simple MVVM-Framework. Installieren, und es wird angezeigt. Es wird auch Ihren MVVM Leben viel einfacher...
InformationsquelleAutor Dean Kuga
erste von allen, es ist keine blöde Frage. Die meisten von MVVM starter kamen aus winforms und es ist normal, die Tendenz haben, bringen Sie Ihre winforms-Praktiken und die Arbeit an code hinter. Alles was Sie jetzt tun müssen, ist vergessen, und denke MVVM.
Gehen zurück zu Ihrer Frage, Sie haben ein Wörterbuch, dass Ihre VM-Verarbeitung, und Sie greifen auf das Wörterbuch aus der Sicht. Ihre Sicht sollte nicht eine Idee, über Ihre viewmodel-außer durch Bindung.
Machen, ein Fenster blinkt, wenn es gibt änderungen im viewmodel klingt wie eine angefügte Verhalten zu mir. Hier ist gut zu Lesen über angehängte Verhalten.
http://www.codeproject.com/Articles/28959/Introduction-to-Attached-Behaviors-in-WPF
Um es einfacher zu machen, werde ich versuchen, Ihnen ein sehr einfaches Beispiel, das irgendwie relevant, um Ihren Fall.
Erstellen Sie eine angefügte Verhalten-Klasse, wo Sie eine IEnumerable-wo, Wann immer Sie etwas hinzufügen, eine messagebox auf dem Bildschirm erscheinen. Ändern Sie einfach die messagebox-code, um was auch immer blinkende animation, die Sie gerne tun würden auf Benachrichtigen.
In der viewmodel erstellen, können Sie eine ObservableCollection-Eigenschaft müssen Sie eine observable-collection, so gibt es eine Sammlung changed-Ereignis-Benachrichtigung. Ich habe auch einen Befehl für das hinzufügen, so dass Sie es testen kann.
Und hier ein Blick, wo Sie können, binden Sie die Benachrichtigungen proeprty von Ihrem view-Modell.
Jedes mal, wenn Sie etwas hinzufügen in die ObservableCollection, erhalten Sie eine messagebox den Benutzer zu Benachrichtigen, dass etwas Hinzugefügt wurde, um Ihre Sammlung.
Ich hoffe, dass ich geholfen bei deinem problem. Sag mir einfach, wenn Sie einige Klarstellungen.
InformationsquelleAutor Lance