Also im Grunde habe ich drei Viewmodels. Eines ist das ShellViewModel, in dem alle Daten in Echtzeit gespeichert und berechnet werden. Und zwei andere Viewmodels, die die Berechnungen auf verschiedene Arten zeigen. Diese beiden VMs werden als Ansichten innerhalb der Shell-Ansicht angezeigt (über den Calibrn-Container und ActiveItem, die mit ContentControl verknüpft sind). Um die Daten zu den anderen VMs zu bekommen, binde ich ihre Eigenschaften an die Eigenschaften der Shell-VM, indem ich sie an den Konstruktor der zweiten VM sende.WPF Notify arbeitet nicht mit mehreren Viewmodels
Die Eigenschaften sind Klassen aus einer DLL mit Notify-Funktionen. Als Referenztyp sind die Klassen in den VMs identisch. In den anderen VMs binde ich an diese Klassen Eigenschaften.
class PropertyOfShellVM
{
bool PropertyA{get;set;}
int PropertyB{get;set;}
}
<CheckBox Content="PropA" IsChecked="{Binding VMProp.PropertyA}"/>
<Slider Value="{Binding VMProp.PropB}"/>
Das ist, dass diese Klassen sehr oft ändern und ständig aktualisiert werden müssen. Aber wenn Caliburns NotifyOfPropertyChange (() => VMProp) verwendet, wird die UI nicht aktualisiert. Ich habe versucht, Notify im Eigenschaften-Getter zu schreiben, aber ohne Wirkung. Ich habe auch versucht, die VM-Eigenschaften für benutzerdefinierte Ereignisse neu zu binden, die ich über Caliburns Ereignis-Manager an neue Ergebnisse gesendet habe, aber es ist viel zu langsam (ich habe diese Werte mehrmals pro Sekunde geändert, aber die Ereignisse aktualisieren die Benutzeroberfläche nur einmal pro 3 Sekunden). Wie kann die Notify behoben werden?
Im letzten Absatz habe ich gesagt, dass ich das versucht habe und es ist wirklich langsam =) Ich habe nicht gesagt, dass das war Caliburn Event Manager obwohl, mb –