MVVM + UserControl + Dépendance de la Propriété

Bon, c'est en quelque sorte liée à cette question: WPF l'Impression de plusieurs pages à partir d'un seul Modèle de Vue

J'ai essayé de suivre les conseils donnés, mais maintenant je suis coincé.

Mon application utilise un MainView.xaml et le MainViewViewModel.cs, je suis en utilisant MVVM Light en arrière-plan.

Maintenant - selon le post - it semble que j'ai de faire ce qui suit:

  • Créer un contrôle utilisateur
  • Exposer certaines propriétés de l'utilisateur contrôle
  • Assurez-vous que le modèle de vue montre ces propriétés

L'idée est claire, mais je suis coincé lorsque vous essayez d'en informer les uns les autres.

Mon contrôle de l'utilisateur (UcTest.xaml) expose une Propriété de Dépendance:

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");
}

Bon, alors je le fais maintenant avoir un contrôle utilisateur qui possède certaines propriétés de dépendance. Pourtant, ces propriétés sont complètement séparée de mon ViewModel propriétés (ce sont ceux qui doivent être affichés).

Donc en gros, j'ai deux possibilités:

  • Comment puis-je maintenant dire à mon ViewModel pour le contrôle UserControl que certaines propriétés ont changé?
  • Est-il possible d'oublier les propriétés de dépendance et d'accéder à la vue du modèle directement?

Plus d'infos #1:
J'ai téléchargé une (simple) exemple de ce que je suis en train de faire ici: Exemple De Projet. Je voudrais changer la valeur de l'étiquette dans UserControl1 (par l'intermédiaire de la liaison de la propriété du ViewModel pour UserControl1) de mon MainViewViewModel.

L'utilisation de la liaison de données
Cela voudrait dire que mon UserControl aurait besoin d'implémenter INotifyPropertyChanged qui est essentiellement ce que mon ViewModel devrait le faire.

OriginalL'auteur Tom L. | 2013-03-02