In Ordnung, das ist etwas im Zusammenhang mit dieser Frage: WPF Printing multiple pages from a single View ModelMVVM + + Usercontrol Abhängigkeitseigenschaft
Ich habe versucht, den Rat dort gegeben zu folgen, aber jetzt stecke ich bin.
Meine Anwendung verwendet MainView.xaml und das entsprechende MainViewViewModel.cs, ich verwende MVVM Light im Hintergrund.
jetzt - nach der Post - es scheint, ich habe zu tun, die folgenden:
- eine Benutzersteuerung erstellen
- einige Eigenschaften Expose von der Benutzersteuerung
- Sicherstellen, dass das Ansichtsmodell zeigt diese Eigenschaften
Die Idee ist klar, aber ich bin fest, wenn Sie versuchen, sich gegenseitig zu benachrichtigen.
Meine Benutzersteuerung (UcTest.xaml) stellt eine Abhängigkeitseigenschaft:
public string SpecialText
{
get { return (string)GetValue(SpecialTextProperty); }
set
{
SetValue(SpecialTextProperty, value);
}
}
// Using a DependencyProperty as the backing store for SpecialText. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SpecialTextProperty =
DependencyProperty.Register("SpecialText", typeof(string), typeof(UcTest), new PropertyMetadata(new PropertyChangedCallback(SpecialTextChangedPropertyCallback)));
private static void SpecialTextChangedPropertyCallback(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
// Do something
Debug.WriteLine("Ffgdgf");
}
Okay, also ich habe jetzt eine Benutzersteuerung, die einige Abhängigkeitseigenschaften hat. Diese Eigenschaften sind jedoch vollständig von meinen ViewModel-Eigenschaften getrennt (das sind diejenigen, die angezeigt werden sollen).
Also im Grunde habe ich zwei Möglichkeiten:
- Wie kann ich jetzt meine Viewmodel für die Usercontrol sagen, dass einige Eigenschaften geändert haben?
- Gibt es eine Möglichkeit, die Abhängigkeitseigenschaften zu vergessen und direkt auf das Ansichtsmodell zuzugreifen?
Zusätzliche Informationen # 1: Ich habe ein (einfaches) Beispiel hochgeladen, was ich versuche, hier zu tun: Example Project. Ich möchte den Wert der Beschriftung in UserControl1 (über die Bindungseigenschaft in dem ViewModel für UserControl1) von meinem MainViewViewModel ändern.
Verwenden Sie Datenbindung –
Das würde bedeuten, dass mein UserControl INotifyPropertyChanged implementieren müsste, das ist im Grunde, was mein ViewModel tun sollte. –