2010-06-14 71 views
3

我有一個WinForms應用程序,其中包含一些用於託管WPF用戶控件(使用ElementHost)的元素。在WinForms中綁定到WPF託管控件的DependencyProperty

我希望能夠將我的WinForm的控件屬性(Button.Enabled)綁定到託管的WPF用戶控件(SearchResults.IsAccountSelected)的自定義DependencyProperty。

是否可以將System.Windows.Forms.Binding綁定到由DependencyProperty管理的屬性?

另外,因爲我知道INotifyPropertyChanged.PropertyChanged事件的System.Windows.Forms.Binding監視 - 由DependencyProperty支持的屬性會自動觸發這些事件,還是必須實現和管理手動發送PropertyChanged事件?

+0

似乎如果你可以,將是一個嚴重的黑客攻擊。可能不是最好的路線。 – jsmith 2010-06-14 21:48:05

+1

@jsmith - 使用綁定可能不是最好的路線?你覺得還有什麼其他問題? UI是否跨線程考慮? – Reddog 2010-06-14 22:18:47

回答

1

DependencyObject沒有實現INotifyPropertyChanged,所以如果你走這條路,你將必須實現的PropertyChanged事件的手動發送。

幸運DependencyObject確實有OnPropertyChanged方法,在你的DependencyObject派生類等等實現INotifyPropertyChanged是微不足道的,例如:

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的思想直接綁定到控件屬性可能不是最好的路線。在大多數情況下,MVVM是更好的方法。當然也有例外。

相關問題