MVVM + UserControl + Abhängigkeitseigenschaft

Okay, das ist etwas im Zusammenhang mit dieser Frage: WPF-Drucken von mehreren Seiten von einem single-View-Modell

Ich versuchte, befolgen Sie die Ratschläge gibt, aber jetzt bin ich stecken.

Meine Anwendung nutzt ein MainView.xaml und die entsprechenden MainViewViewModel.cs, ich bin mit MVVM-Light in den hintergrund.

Nun - nach der post - es scheint, muss ich Folgendes tun:

  • Erstellen Sie eine Benutzer-Steuerelement -
  • Setzen einige Eigenschaften aus dem Benutzer die Kontrolle
  • Stellen Sie sicher, dass die view-Modell zeigt diese Eigenschaften

Die Idee ist klar, aber ich bin stecken, wenn Sie versuchen zu notifizieren einander.

Mein user control (UcTest.xaml) stellt ein Dependency-Eigenschaft:

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 mache das jetzt über eine Benutzer-Steuerung, die einige abhängigkeitseigenschaften. Doch diese Eigenschaften sind vollkommen getrennt von meinem ViewModel-Eigenschaften (das sind die, welche angezeigt werden sollen).

Also im Grunde habe ich zwei Möglichkeiten:

  • Wie kann ich jetzt sagen, mein "ViewModel" für das Benutzersteuerelement, dass einige Eigenschaften geändert haben?
  • Gibt es eine Möglichkeit zu vergessen, die Abhängigkeit der Eigenschaften und der Zugriff auf das view-model-direkt?

Zusätzliche info #1:
Hochgeladen habe ich ein (einfaches) Beispiel, was ich versuche zu tun, hier: Beispiel-Projekt. Ich möchte den Wert des Labels in UserControl1 (über die binding-Eigenschaft im ViewModel für UserControl1) von meinem MainViewViewModel.

  • Verwenden Sie Datenbindung
  • Das würde bedeuten, dass mein UserControl würde die INotifyPropertyChanged implementieren müssen, das ist im Grunde das, was mein ViewModel tun sollte.
InformationsquelleAutor Tom L. | 2013-03-02
Schreibe einen Kommentar