Привязка к расположенному в WPF элементу управления DependencyProperty в WinForms - PullRequest
3 голосов
/ 15 июня 2010

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

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

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

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

1 Ответ

1 голос
/ 15 июня 2010

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;
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...