您的位置:首页 > 财经 > 产业 > 西安最大的互联网公司_贵阳网站开发哪家便宜_营销型网站有哪些平台_搜索引擎提交入口网址

西安最大的互联网公司_贵阳网站开发哪家便宜_营销型网站有哪些平台_搜索引擎提交入口网址

2025/1/7 7:53:34 来源:https://blog.csdn.net/thinbug/article/details/144845642  浏览:    关键词:西安最大的互联网公司_贵阳网站开发哪家便宜_营销型网站有哪些平台_搜索引擎提交入口网址
西安最大的互联网公司_贵阳网站开发哪家便宜_营销型网站有哪些平台_搜索引擎提交入口网址

Listbox绑定数据通过ItemsSource来的,如果绑定的是普通的List<数据>,不会自己刷新。

使用ObservableCollection集合

解决问题的方法:

  1. 将数组替换为 ObservableCollection
    ObservableCollection 是专为绑定设计的集合类型,可以通知 WPF 绑定的集合数据发生变化。

如果本身是List,可以修改为:

using System.Collections.ObjectModel;public ObservableCollection<MyItem> MyItems { get; set; }public MainViewModel()
{MyItems = new ObservableCollection<MyItem>{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,就全部刷新了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com