如何在SilverLight 3项目中刷新ListBox.ItemsSource?
我是我的XAML,我有一个ListBox定义
在代码隐藏中,我定义了一个模块级的ObservableCollection设备。
private ObservableCollection devices = new ObservableCollection();
在OnNavigatedTo事件中,我将集合绑定到列表框
lstStatus.ItemsSource = devices;
该集合很可能不会增长或缩小,但其内部的对象会一直在变化。 无论出于何种原因,当我执行以下代码时,列表不会更新:
Device selectedDevice = null; foreach (Device dv in devices) { if (dv.IsTrunk) { selectedDevice = dv; break; } } if (selectedDevice != null) selectedDevice.StatusName = DateTime.Now.ToString(); else throw new Exception();
事实上,我能够让它工作的唯一方法就是伪造它,从列表中删除项目然后再添加它。 显然不是长期的解决方案。
我错过了什么?
听起来你在Device
对象中缺少INotifyPropertyChanged
实现。
例如:-
public class Device : INotifyPropertyChanged { private string _StatusName; public string StatusName { get { return _StatusName; } set { _StatusName = value; NotifyPropertyChanged("StatusName"); } } private void NotifyPropertyChanged(string name) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(name)); } #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; #endregion }
这将使属性更改时通知绑定到特定属性的TextBlocks。
上述就是C#学习教程:如何在SilverLight 3项目中刷新ListBox.ItemsSource?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/949976.html