У меня есть два элемента UserControl («UserControlParentView» и «UserControlChildView») с шаблоном MVVM, реализованным в обоих элементах управления. Родительский элемент управления является контейнером для дочернего элемента управления, и свойство дочернего элемента управления должно обновляться привязкой данных из родительского элемента управления, чтобы отображать / скрывать некоторые флажки внутри дочернего элемента управления.
Описание родительского контроля
UserControlParentViewModel имеет свойство:
private bool isShowCheckbox = false;
public bool IsShowCheckbox
{
get { return isShowCheckbox; }
set { isShowCheckbox = value; NotifyPropertyChanged("IsShowCheckbox"); }
}
UserControlParentViewModel - как установить DataContext родительского элемента управления:
public UserControlParentView()
{
InitializeComponent();
this.DataContext = new UserControlParentViewModel();
}
UserControlParentView содержит кнопку-переключатель (в XAML), связанную со свойством UserControlParentViewModel IsShowCheckbox
<ToggleButton Grid.Column="1" IsChecked="{Binding IsShowCheckbox, Mode=TwoWay}"></ToggleButton>
Также родительский элемент управления содержит экземпляр дочернего элемента (где-то в XAML)
<local:UserControlChildView IsCheckBoxVisible="{Binding IsShowCheckbox}" ></local:UserControlChildView>
, поэтому свойство в дочернем элементе управления должно обновляться, когда пользователь переключает / снимает кнопку.
Дочерний элемент управления содержит логическое свойство, которое необходимо обновить из родительского элемента управления, но ничего не произошло! Точка останова никогда не срабатывает!
Свойство в UserControlChildView, которое следует обновить из родительского элемента управления (здесь я планирую сделать видимым / скрытым chechBox в коде позади):
public bool IsCheckBoxVisible
{
get { return (bool)GetValue(IsCheckBoxVisibleProperty); }
set { SetValue(IsCheckBoxVisibleProperty, value); }
}
// Using a DependencyProperty as the backing store for IsCheckBoxVisible. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsCheckBoxVisibleProperty =
DependencyProperty.Register("IsCheckBoxVisible", typeof(bool), typeof(TopMenuButton), new PropertyMetadata(false));
Так вот вопрос - что я делаю не так? Почему собственность ребенка никогда не обновляется? Кстати, в окне вывода нет сообщений об ошибках привязки ...