Va bene, questo è in qualche modo legati a questa domanda: WPF Printing multiple pages from a single View ModelMVVM + UserControl + proprietà di dipendenza
ho cercato di seguire i consigli forniti lì, ma ora mi sono bloccato.
La mia applicazione utilizza un MainView.xaml e il MainViewViewModel.cs appropriato, sto usando MVVM Light in background.
ora - secondo il post - sembra che devo fare la seguente:
- Creare un controllo utente
- espongono alcune proprietà dal controllo dell'utente
- Assicurarsi che il modello di visualizzazione mostra questi immobili
L'idea è chiara ma sono bloccato quando cerco di notificarci a vicenda.
mio controllo utente (UcTest.xaml) espone una proprietà di dipendenza:
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");
}
Va bene, così io ora hanno un controllo utente che ha alcune proprietà di dipendenza. Tuttavia, queste proprietà sono completamente separate dalle mie proprietà ViewModel (quelle sono quelle che devono essere visualizzate).
Quindi, in pratica ho due possibilità:
- Come posso ora dire al mio ViewModel per l'UserControl che alcune proprietà sono cambiati?
- Esiste la possibilità di dimenticare le proprietà di dipendenza e accedere direttamente al modello di visualizzazione?
informazioni aggiuntive # 1: ho caricato un (semplice) esempio di quello che sto cercando di fare qui: Example Project. Vorrei modificare il valore dell'etichetta in UserControl1 (tramite la proprietà di associazione nel ViewModel per UserControl1) dal mio MainViewViewModel.
Utilizzare il binding di dati –
Ciò significherebbe che il mio UserControl dovrebbe implementare INotifyPropertyChanged che è sostanzialmente ciò che dovrebbe fare il mio ViewModel. –