网站备案后可以修改吗,重庆网站推广外包企业,平台搭建大概多少钱,平台公司招聘Listbox绑定数据通过ItemsSource来的#xff0c;如果绑定的是普通的List数据#xff0c;不会自己刷新。
使用ObservableCollection集合
解决问题的方法:
将数组替换为 ObservableCollection ObservableCollection 是专为绑定设计的集合类型#xff0c;可以通知 W…Listbox绑定数据通过ItemsSource来的如果绑定的是普通的List数据不会自己刷新。
使用ObservableCollection集合
解决问题的方法:
将数组替换为 ObservableCollection ObservableCollection 是专为绑定设计的集合类型可以通知 WPF 绑定的集合数据发生变化。
如果本身是List可以修改为
using System.Collections.ObjectModel;public ObservableCollectionMyItem MyItems { get; set; }public MainViewModel()
{MyItems new ObservableCollectionMyItem{new MyItem { showsafeui true, SomeOtherProperty Item 1 },new MyItem { showsafeui false, SomeOtherProperty Item 2 },new MyItem { showsafeui true, SomeOtherProperty Item 3 }};
}// 动态添加或删除数据
public void AddNewItem()
{MyItems.Add(new MyItem { showsafeui true, SomeOtherProperty New Item });
}public void RemoveItem()
{if (MyItems.Any())MyItems.RemoveAt(0);
}使用 ObservableCollection 后新增、删除、或重新排序数据时ListBox 会自动刷新。
数据内容变化的刷新INotifyPropertyChanged
上面的数据如果某个属性的内容发生了变化如何刷新。可以使用INotifyPropertyChanged。
public class HeartInfo : INotifyPropertyChanged
{public int id { get; set; }public bool showsafeui{ get; set; }public event PropertyChangedEventHandler PropertyChanged;protected void OnPropertyChanged([CallerMemberName] string propertyName null){Console.WriteLine(刷新UI------------);PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}
}刷新单个数据
这样在某个属性变化的时候可以 public bool showsafeui{get _showsafeui;set{if (_showsafeui ! value){_showsafeui value;OnPropertyChanged(); // 通知绑定属性更改}}}刷新多个数据
如果某个属性变化需要刷新多个 private bool _showsafe;public bool showsafe{get _showsafe;set{if (_showsafe ! value){_showsafe value;OnPropertyChanged(); // 通知绑定的 showsafe 属性OnPropertyChanged(nameof(showsafeui)); // 通知绑定的 showsafeui 属性}}}简化刷新所有
我每次都想有一个属性变化刷新所有属性 可以OnPropertyChanged(string.Empty)传入空 private int _updateall 0;public int updateall {get { return _updateuistat;}set {if (_updateall! value) { _updateall 0; OnPropertyChanged(string.Empty); }} //刷新ui
}这样我每次属性变化都调用updateall 1就全部刷新了。