У меня есть класс MyComponent, и у него есть DependencyProperty caled BackgroundProperty.WPF custom DependencyProperty уведомляет об изменениях
public class MyComponent
{
public MyBackground Background
{
get { return (MyBackground)GetValue(BackgroundProperty); }
set { SetValue(BackgroundProperty, value); }
}
public static readonly DependencyProperty BackgroundProperty =
DependencyProperty.Register("Background", typeof(MyBackground),
typeof(MyComponent), new FrameworkPropertyMetadata(default(MyBackground), new PropertyChangedCallback(OnPropertyChanged)));
}
MyBackground это класс, который является производным от DependencyObject и она имеет некоторые DependencyProperties.
public class MyBackground : DependencyObject
{
public Color BaseColor
{
set { SetValue(BaseColorProperty, value); }
get { return (Color)GetValue(BaseColorProperty); }
}
public static readonly DependencyProperty BaseColorProperty =
DependencyProperty.Register("BaseColor", typeof(Color),
typeof(MyBackground), new UIPropertyMetadata(Colors.White));
[...]
}
Теперь, что я хочу, когда свойство от MyBackground изменяется, MyComponent быть уведомлен, что MyBackground изменилось и PropertyChangedCallback назвали OnPropertyChanged называться.
Я немного смущен, почему вам это нужно. Обычно это наоборот, где DP используются для привязок, и когда они меняются, вы хотите уведомить DP. Зачем вам это нужно наоборот? –
Что значит это назад @Omribitan? Это стандартный WPF. Если я изменяю значение свойства зависимостей, все вещи, связанные с этим свойством, знают об этом мгновенно. Это своего рода свойства зависимостей - и привязка данных WPF построена на этой концепции. – BrainSlugs83
@ BrainSlugs83 Подумайте о видимости элемента управления, ограниченном свойством класса ViewModel, назовем его 'IsVisibile'. «Видимость» - это DP, а «IsVisibile» - простое свойство. Что обычно происходит, когда изменения «IsVisible» вы хотите уведомить пользовательский интерфейс (в основном с помощью «INotifyPropertyChanged»), чтобы «DP» знал, что значение изменилось, а не наоборот ... –