Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 如何获取itemsourcechanged事件?列表框_Silverlight_Silverlight 4.0 - Fatal编程技术网

Silverlight 如何获取itemsourcechanged事件?列表框

Silverlight 如何获取itemsourcechanged事件?列表框,silverlight,silverlight-4.0,Silverlight,Silverlight 4.0,如何在列表框中获取itemsourcechangedevent 例如,itemsource从null更改为ListA,然后更改为ListB 我知道没有这样的事件。但是有什么解决办法吗 提前感谢:)Silverlight中没有项目SourceChanged事件 但是,有一个解决办法。使用中提到的RegisterForNotification()方法为ListBox的ItemsSource属性注册属性值更改回调。常用(已回答)方法是使用Blend SDK中的PropertyChangedTrigge

如何在列表框中获取itemsourcechangedevent

例如,itemsource从null更改为ListA,然后更改为ListB

我知道没有这样的事件。但是有什么解决办法吗


提前感谢:)

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);

列表框的数据源在什么情况下发生变化?你能发布一些代码吗?我无法描述这种方法有多少种方式是错误的。这是一种正确的方法(使用依赖属性回调),但实现非常糟糕。