Silverlight 如何获取itemsourcechanged事件?列表框
如何在列表框中获取itemsourcechangedevent 例如,itemsource从null更改为ListA,然后更改为ListB 我知道没有这样的事件。但是有什么解决办法吗Silverlight 如何获取itemsourcechanged事件?列表框,silverlight,silverlight-4.0,Silverlight,Silverlight 4.0,如何在列表框中获取itemsourcechangedevent 例如,itemsource从null更改为ListA,然后更改为ListB 我知道没有这样的事件。但是有什么解决办法吗 提前感谢:)Silverlight中没有项目SourceChanged事件 但是,有一个解决办法。使用中提到的RegisterForNotification()方法为ListBox的ItemsSource属性注册属性值更改回调。常用(已回答)方法是使用Blend SDK中的PropertyChangedTrigge
提前感谢:)Silverlight中没有
项目SourceChanged
事件
但是,有一个解决办法。使用中提到的RegisterForNotification()
方法为ListBox
的ItemsSource属性注册属性值更改回调。常用(已回答)方法是使用Blend SDK中的PropertyChangedTrigger
。但是,我不喜欢推荐使用其他SDK,除非有明确的迹象表明SDK已经在使用中
我现在假设您想要侦听“ItemsSourceChanged”事件的代码隐藏。您可以使用的一种技术是在UserControl
中创建dependencProperty
,并将其绑定到要侦听的控件的ItemsSource
private static readonly DependencyProperty ItemsSourceWatcherProperty =
DependencyProperty.Register(
"ItemsSourceWatcher",
typeof(object),
typeof(YourPageClass),
new PropertyMetadata(null, OnItemsSourceWatcherPropertyChanged));
private static void OnItemsSourceWatcherPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
YourPageClass source = d As YourPageClass;
if (source != null)
source.OnItemsSourceWatcherPropertyChanged();
}
private void OnItemsSourceWatcherPropertyChanged()
{
// Your code here.
}
现在,假设您的列表框
有一个名称“myListBox”,您可以设置观看:-
Binding b = new Binding("ItemsSource") { Source = myListBox };
SetBinding(ItemsSourceWatcherProperty, b);
列表框的数据源在什么情况下发生变化?你能发布一些代码吗?我无法描述这种方法有多少种方式是错误的。这是一种正确的方法(使用依赖属性回调),但实现非常糟糕。