ich eine verschachtelte Ansicht Modellstruktur haben wie im folgenden Beispiel:Trigger-INotifyPropertyChanged.PropertyChanged für Immobilien auf abhängige/verschachtelte Ansicht Modell
public class SubViewModel : INotifyPropertyChanged
{
public string Property
{
get
{
// calculate result and return it
}
}
}
public class ViewModel : INotifyPropertyChanged
{
public SubViewModel Sub { get; set; }
public void MyMethod()
{
// executes code that changes some parameters such that Sub.Property changes
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Sub.Property"));
}
}
Es gibt Situationen, wenn eine Änderung in dem Modell übergeordneten Ansicht geschieht, dass der Einfluss Eigenschaften im verschachtelten Ansichtsmodell. Mit anderen Worten, eine Eigenschaft (SubViewModel.Property
im Beispiel) im untergeordneten Ansichtsmodell ändert sich, aber das untergeordnete Ansichtsmodell weiß das nicht.
Ich möchte PropertyChanged
in einer Weise aufrufen, die der WPF-Bindungs-Engine mitteilt, dass sich die Eigenschaft Property
auf dem untergeordneten Ansichtsmodell Sub
geändert hat. Ich habe versucht, alle möglichen Optionen, aber keiner hat bisher gearbeitet:
OnPropertyChanged("");
OnPropertyChanged("*");
OnPropertyChanged("Sub");
OnPropertyChanged("Sub.Property");
OnPropertyChanged("Sub.*");
Gibt es eine Möglichkeit, dies zu erreichen?
Hinweis: Ich weiß, dass das übergeordnete Ansichtsmodell eine Methode für das untergeordnete Ansichtsmodell aufrufen kann, die ein PropertyChanged
-Ereignis im untergeordneten Ansichtsmodell auslöst. Ich habe meine Gründe, es nicht so zu machen.
Vielleicht sollten Sie Ihre Gründe dafür auf diese Weise erklären. Dann können wir Ihnen vielleicht helfen, einen besseren Weg zu finden, Ihre Ziele zu erreichen. –
Ernsthaft verstehe ich immer noch nicht ganz, was du meintest, aber du kannst 'OnPropertyChanged'' internal' machen und dann 'Sub.OnPropertyChanged (" Property ")' aufrufen. Ich weiß nicht, was du willst, aber wer weiß - das ist vielleicht das, was du brauchst. – Jai
Warum können Sie das PropertyChanged-Ereignis nicht einfach von jeder Eigenschaft im Unteransichtsmodell aus auslösen? Wenn Sie den Subviewmodelinstance.PropertyName im Hauptansichtsmodell ändern, wird das entsprechende Ereignis automatisch ausgelöst. Es ist der normale Weg. Ich denke nicht, dass Sie das Ereignis auslösen müssen, indem Sie eine Funktion im Unteransichtsmodell aufrufen. – ViVi