如果我在自定义控件上创建一个依赖属性,该属性需要IEnumerable<T>
。
例如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 :(得分:0)
从MSDN“特别是,如果您正在使用OneWay或TwoWay(例如,您希望在源属性动态更改时更新UI),则必须实现适当的属性更改通知机制,例如INotifyPropertyChanged接口“
ObservableCollection<T>
为您实现了INotifyPropertyChanged。 IEnumerable<T>
没有。如果您想要简单的双向绑定,只需绑定到ObservableCollection<T>
,然后将UpdateSourceTrigger
更改为PropertyChanged
即可。 XAML:
<ItemSource = "{Binding Path=MyCollection, UpdateSourceTrigger=PropertyChanged}">