3

私は、ホストされている WPF ユーザー コントロール (ElementHost を使用) であるいくつかの要素を持つ WinForms アプリを持っています。

Button.EnabledWinForm のコントロール プロパティ ( ) を、ホストされた WPF ユーザー コントロール ( ) のカスタム DependencyProperty にバインドできるようにしたいと考えていますSearchResults.IsAccountSelected

System.Windows.Forms.Binding を DependencyProperty によって管理されるプロパティにバインドすることは可能ですか?

また、System.Windows.Forms.Binding がINotifyPropertyChanged.PropertyChangedイベントを監視していることはわかっているので、DependencyProperty によってサポートされるプロパティがこれらのイベントを自動的に発生させるのでしょうか、それとも PropertyChanged イベントの送信を手動で実装および管理する必要がありますか?

4

1 に答える 1

1

DependencyObjectを実装していないためINotifyPropertyChanged、このルートを使用する場合は、PropertyChanged イベントの送信を手動で実装する必要があります。

幸いにもメソッドDependencyObjectがあるため、派生クラスでのOnPropertyChanged実装は簡単です。たとえば、次のようになります。INotifyPropertyChangedDependencyObject

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 プロパティに直接バインドすることは最善の方法ではない可能性があるという jsmith の考えに同意したいと思います。ほとんどの場合、MVVM の方が適しています。もちろん、例外もあります。

于 2010-06-15T07:46:34.483 に答える