Привязка к расположенному в WPF элементу управления DependencyProperty в WinForms

У меня есть приложение WinForms с некоторыми элементами, которые размещены пользовательские элементы управления WPF (с помощью ElementHost).

Я хочу иметь возможность связать свой элемент управления WinForm (Button.Enabled) к пользовательскому DependencyProperty размещенного пользовательского элемента управления WPF (SearchResults.IsAccountSelected).

Можно ли привязать System.Windows.Forms.Binding к свойству, управляемому DependencyProperty?

Кроме того, так как я знаю часы System.Windows.Forms.Binding для INotifyPropertyChanged.PropertyChanged события - будет ли свойство, поддерживаемое DependencyProperty, автоматически запускать эти события, или мне придется осуществлять и управлять отправкой событий PropertyChanged вручную?

1 ответ

Решение

DependencyObject не реализует INotifyPropertyChanged, поэтому, если вы выберете этот маршрут, вам придется реализовать отправку событий PropertyChanged вручную.

к счастью DependencyObject имеет OnPropertyChanged метод, поэтому реализация INotifyPropertyChanged в вашем DependencyObject-приобретенный класс тривиален, например:

public class MyClass : HeaderedContentControl, INotifyPropertyChanged
{
  protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
  {
    var handler = PropertyChanged;
    if(handler!=null) handler(this, new PropertyChangedEventArgs(e.Property.Name));
    base.OnPropertyChanged(e);
  }
  public event PropertyChangedEventHandler PropertyChanged;
}

Я хотел бы повторить мысль jsmith о том, что привязка непосредственно к свойству UserControl может быть не лучшим путем. В большинстве случаев MVVM - лучший путь. Есть исключения, конечно.

Другие вопросы по тегам