В моем CustomControl у меня есть свойство View View. Внешний элемент управления, который использует этот элемент управления, устанавливает это свойство через модель представления. Когда он установлен, метод Refresh запускается, и представление отображается!
Пока все хорошо! Но что, если я также хочу, чтобы он обновлялся при изменении свойства представления.
Может быть, я не делаю это стандартным способом? Должен ли я определить публичный метод Refresh () для элемента управления и вызвать его извне? Как я могу использовать командование?
public static readonly DependencyProperty ViewProperty =
DependencyProperty.Register(
"View", typeof(View),
typeof(CustomControl), new PropertyMetadata(Refresh)
);
public View View
{
get => (View)GetValue(ViewProperty);
set => SetValue(ViewProperty, value);
}
private static void Refresh(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
//
MessageBox.Show("Refreshed!");
}
public sealed class View : INotifyPropertyChanged
{
private bool m_isDirty;
public bool IsDirty
{
get => m_isDirty;
set
{
m_isDirty = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}