2010-10-25 103 views
2

如果我在需要IEnumerable<T>的自定義控件上創建依賴項屬性。雙向數據綁定,Silverlight和自定義控件/依賴項屬性

例如與IEnumerable<string>

public static readonly DependencyProperty MyCollectionProperty = 
    DependencyProperty.Register("MyCollection", typeof(IEnumerable<string>), typeof(MyControl), new PropertyMetadata(new List<string>())); 

public IEnumerable<string> MyCollection 
{ 
    get { return (IEnumerable<string>)GetValue(MyCollectionProperty); } 
    set { SetValue(MyCollectionProperty, value); } 
} 

如果我在這種情況下它的數據綁定或ObservableCollection<T><string>。 Silverlight是否爲我處理雙向數據綁定?

+0

您能澄清一下您'爲我管理雙向數據綁定'嗎?一般來說,雙向綁定到集合並不是一個好主意。如果你只是操縱現有的集合,那麼單向綁定工作正常。 – Stephan 2010-10-25 16:12:06

回答

0

MSDN「特別是,如果您使用的是OneWay或TwoWay(例如,當源屬性動態更改時希望更新UI),則必須實施適當的屬性更改通知機制,例如INotifyPropertyChanged接口」

ObservableCollection<T>爲您實現INotifyPropertyChanged。 IEnumerable<T>不。如果您想要簡單的雙向綁定,只需綁定到ObservableCollection<T>,並將您的UpdateSourceTrigger更改爲PropertyChanged。 XAML:

<ItemSource = "{Binding Path=MyCollection, UpdateSourceTrigger=PropertyChanged}"> 
相關問題