MVVM + UserControl + Зависимость Свойство
Хорошо, это несколько связано с этим вопросом:WPF Печать нескольких страниц из одной модели представления
Я пытался следовать советам, данным там, но теперь я застрял.
Мое приложение использует MainView.xaml и соответствующий MainViewViewModel.cs, я использую MVVM Light в фоновом режиме.
Теперь - согласно посту - кажется, я должен сделать следующее:
Создать пользовательский элемент управленияВыставить некоторые свойства из пользовательского элемента управленияУбедитесь, что модель представления показывает эти свойстваИдея ясна, но я застрял при попытке уведомить друг друга.
Мой пользовательский элемент управления (UcTest.xaml) предоставляет свойство зависимости:
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");
}
Хорошо, теперь у меня есть пользовательский элемент управления, который имеет некоторые свойства зависимости. Тем не менее, эти свойства полностью отделены от моих свойств ViewModel (те, которые должны отображаться).
Так что в принципе у меня есть две возможности:
Как теперь я могу сказать своей ViewModel для UserControl, что некоторые свойства изменились?Есть ли возможность забыть о свойствах зависимости и получить прямой доступ к модели представления?Дополнительная информация # 1: я загрузил (простой) пример того, что я пытаюсь сделать здесь:Пример проекта, Я хотел бы изменить значение метки в UserControl1 (через свойство привязки в ViewModel для UserControl1) из моего MainViewViewModel.