我有一個DependencyProperty爲DependencyObject:數據綁定依賴項屬性數據對象
public class DependencyObjectClass: DependencyObject
{
public static DependencyProperty BooleanValueProperty = DependencyProperty.Register("BooleanValue", typeof (bool), typeof (DependencyObjectClass));
public bool BooleanValue
{
get { return (bool)GetValue(BooleanValueProperty); }
set { SetValue(BooleanValueProperty, value); }
}
}
我也有我的數據源類:
public class DataSource: INotifyPropertyChanged
{
private bool _istrue;
public bool IsTrue
{
get { return _istrue; }
set
{
_istrue = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("IsTrue"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
我試圖綁定與兩個以上的對象此代碼:
var dependencyObject = new DependencyObjectClass();
var dataSource = new DataSource();
var binding = new Binding("IsTrue");
binding.Source = dataSource;
binding.Mode = BindingMode.TwoWay;
BindingOperations.SetBinding(dependencyObject, DependencyObjectClass.BooleanValueProperty, binding);
每當我更改DependencyObjectClass上的BooleanValue屬性時,Dat aSource會做出反應,但它不會以其他方式工作(更改DataSource上的IsTrue屬性對於DependencyObjectClass沒有任何作用)。
我在做什麼錯?我必須手動處理OnPropertyChanged事件嗎?如果是的話,那將會有點令人失望,因爲我期待這一切能夠自動完成。
只是旁白問題,這是什麼意圖?你在創建一個自定義控件嗎? – 2013-02-25 15:53:18
我也看到綁定布爾屬性的一些問題。如果我們從VM通知相同的值來查看它不反映在DependencyProperty.Like的setter中,如果您具有IsTrue的真實值,然後再次分配true,則DependencyProperty的setter不會反映它。這意味着如果你再次設置相同的值,它不反映給DependencyProperty的設置者。 – ethicallogics 2013-02-25 16:10:49
HighCore,我基本上在非WPF對象上實現MVVM模式。我編寫了一個插件,我需要使用一些第三方UI元素,所以我選擇將它們包裝在我自己的類中,派生自DependencyObject。歡迎任何建議。 – jur 2013-02-26 07:05:31