首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

绑定到WPF ListBox时,ObservableCollection<string>中的项不会更新

当将ObservableCollection<string>绑定到WPF ListBox时,如果其中的项不会更新,可能是由于以下几个原因:

  1. 数据绑定未正确设置:确保在XAML中正确设置了ListBox的ItemsSource属性,将其绑定到ObservableCollection<string>的实例。
  2. ObservableCollection<string>未正确实现INotifyPropertyChanged接口:ObservableCollection<string>是一个可观察的集合,当其中的项发生更改时,应该触发PropertyChanged事件通知绑定的ListBox进行更新。确保ObservableCollection<string>类实现了INotifyPropertyChanged接口,并在项更改时触发PropertyChanged事件。
  3. 项的更改不在UI线程上进行:在WPF中,UI元素的更改必须在UI线程上进行。如果ObservableCollection<string>的项在非UI线程上更改,ListBox可能无法正确更新。确保在更改ObservableCollection<string>的项时,使用Dispatcher将更改操作调度到UI线程上。
  4. ListBox的ItemTemplate未正确设置:如果ListBox的ItemTemplate未正确设置,可能导致项不会正确显示。确保在ListBox的ItemTemplate中设置了正确的数据绑定,以便显示ObservableCollection<string>中的每个项。

综上所述,要解决绑定到WPF ListBox时ObservableCollection<string>中的项不会更新的问题,需要确保正确设置数据绑定、实现INotifyPropertyChanged接口、在UI线程上进行更改操作,并正确设置ListBox的ItemTemplate。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WPF 已知问题 在 ObservableCollection CollectionChanged 修改集合内容将让 UI 显示错误

本文记录一个 WPF 已知问题,在 ObservableCollection CollectionChanged 事件里面,绕过 ObservableCollection 异常判断逻辑,强行修改集合内容...本文将告诉大家此问题复现方法和修复方法 在 UI 绑定 ObservableCollection 修改时,给此集合列表添加新项目,此时 UI 绑定数据是对但是界面显示错误。...简单复现方法如下 先在后台代码定义好绑定模型 Model 类,代码如下 public class Model { public string?...通过以上异常信息也可以了解为什么 WPF 存在此已知问题,因为原本预期就是开发者不能在集合变更修改集合,如果在每个集合变更里都需要重新处理状态,将会让 WPF 性能很差。...因此这个问题也是不会WPF 里面修复,只能开发者自己修复 强行刷只能放在其他时机,例如在界面添加一个按钮,点击按钮强行刷 private void Button_OnClick(object

2.4K30
  • WPF 列表控件数据源绑定多个数据集合方法

    WPF列表控件如 ListBox 或 ListView 等,本文告诉大家在这些列表控件上进行绑定多个数据集合来源多个实现方法。...在开始之前,咱先搭建一点测试使用代码,假定咱有一个 列表控件 准备绑定数据源是两个 ObservableCollection 对象,下面来定义这两个 ObservableCollection 对象和对应...咱需要将两个 ObservableCollection 对象作为数据源,放在相同一个 ListBox 里面 下面是多个不同实现方式,解决如何在 WPF ListBox 或 ListView 绑定多个数据集合...绑定集合里面,然后在 ItemsSource 使用 CompositeCollection 进行绑定,代码如下 ...- Stack Overflow WPF 很少人知道科技 - walterlv ---- 本文会经常更新,请阅读原文: https://blog.lindexi.com/post/WPF

    3.5K21

    UWP 和 WPF 不同,ListView 绑定集合修改顺序时,UI 刷新规则

    UWP 和 WPF 不同,ListView 绑定集合修改顺序时,UI 刷新规则 2017-10-20 00:14 ObservableCollection...由于 ObservableCollection 主要用于绑定,涉及 UI 更新,而 UI 更新普遍比普通集合修改慢了不止一个数量级,所以可以大胆猜想,Move 存在是为了提升 UI 刷新性能...然而事实真是这样吗? ---- 试验 将 ObservableCollection 用于 UI 绑定目前只有 UWP 和 WPF,于是我写了两个 App 来验证这个问题。...基本可以确定,UWP ListBox 做了更多优化,在根据 DataTemplate 生成控件,一直在重用之前已经生成好控件。...而在 WPF ,则简单地创建和销毁这些控件——即便调用了 ObservableCollection 专有的 Move 方法也没有做更多优化。

    2.2K10

    WPF面试题-来自ChatGPT解答

    性能:如果你数据集合很大,ListView可能更适合,因为它支持虚拟化,只会在需要加载和显示可见,而ListBox会一次性加载所有。 数据绑定是将数据源与控件关联过程。...无论选择ListBox还是ListView,数据绑定步骤是相同: 创建一个数据源,可以是一个集合对象,如List、ObservableCollection等。...在XAML定义ListBox或ListView控件,并设置ItemsSource属性为数据源。 使用ItemTemplate定义每个外观,可以使用数据绑定将数据显示在上。...> 在这个示例,MyData是一个集合对象,绑定ListBoxItemsSource属性。...StaticResource在编译解析资源,使用静态引用,不会更新。DynamicResource在运行时解析资源,使用动态引用,可以自动更新。选择使用哪种方式取决于资源特性和使用场景。

    37030

    C# 值得永久收藏WPF项目实战(经典)

    01 简介 之前也写过好多篇CM框架相关项目实战文章,比如: C# WPF框架Caliburn.Micro快速搭建 C# WPF框架Caliburn.Micro入门实例1 C# WPF MVVM项目实战...mvvm模式下combobox绑定(list、Dictionary) C# WPF MVVM模式Caliburn.Micro框架下事件发布与订阅 但是可能这些都是把一个综合性项目分多个部分分别讲述...做等待窗体; CM框架下Conductor用法; CM框架下IWindowManager; 双检锁单例模式用法; ListBox数据绑定以及窗体切换; 如果以上知识点你都不敢兴趣或者已经熟知,那这篇文章不适合你...03运行结果 04目说明 项目主要包括类文件如下图: ① MainWindowViewModel.cs类: using PropertyChanged; using System.Collections.ObjectModel...logging一个通用日志,需要在nuget上引用:Common.Logging.Log4Net1213; ListBoxItems_SelectionChanged()是listbox选择改变事件

    4.8K10

    【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题

    Dispatcher: 一个抽象基类,用于绑定一个线程上类。与Windows窗体类似,WPF也要求仅从创建线程调用方法和属性。...在自定义现有类型WPF 也更加灵活。WPF 更适合创建“华丽” GUI。 只是它需要比 WinForms 更新 .net 框架,并且需要兼容 dx9 或更高 GPU。...这会导致直到在运动需要它才查找资源。 一个很好例子是对稍后在 XAML 定义资源前向引用。 另一个例子是直到运行时才会存在资源。 如果源资源字典发生更改,它将更新目标。...通常,控件是为了它自己而呈现,并不反映底层数据。 例如,一个Button 不会绑定一个业务对象——它在那里纯粹是为了可以点击它。...不会保留绑定,因此如果修改了绑定源,则不会更新副本值。35.ObservableCollection 和 BindingList 有什么区别?

    47022

    WPF Binding学习(四) 绑定各种数据源

    ListView是ListBox派生类,而GridView是ViewBase派生类,ListViewView是一个ViewBase对象,所以,GridView可以做为ListViewView来使用而不能当作独立控件来使用...2.ADO.NETDataTable对象做为数据源     在wpf,是允许将DataTable直接做为Binding数据源,下面以一个例子做为参考    控件还可以用上面的控件,只需该数据源即可...Caculate方法实现第三个文本框是前两个之和,也就是我们需要将前两个文本框绑定Add方法两个参数,第三个绑定返回值上。  ...枚举值有四个 PreviousData:当前显示向列表上一个数据 TemplateParent:引用应用了模板元素,其中此模板存在数据绑定元素。 ...Self:引用正在绑定元素,允许你该元素一个属性绑定同一元素其他属性上。   FindAncestor:引用数据绑定元素父链上级。

    4.3K30

    关于我知识盲区之ItemsSource分享~

    常用数据绑定控件有文本框(TextBox)、标签(Label)、列表框(ListBox)、组合框(ComboBox)、数据表格(DataGridView)等。...2、以前我只知道如何去使用控件绑定数据,显示数据值。当数据源发生改变重新绑定数据源,初始化数据。...在许多情况下,您使用数据是对象集合。 例如,数据绑定常见方案是使用 ListBox、ListView或 TreeView 等 ItemsControl 来显示记录集合。...可以枚举实现 IEnumerable 接口任何集合。 但是,若要设置动态绑定,以便集合插入或删除操作自动更新 UI,则集合必须实现 INotifyCollectionChanged 接口。...WPF 提供 ObservableCollection 类,该类是实现 INotifyCollectionChanged 接口数据集合内置实现。

    1.1K20

    Silverlight数据绑定IValueConverter学习笔记

    先回忆一下aspx处理: 在aspx,可以直接在后台定义一个变量,然后前台就可以用来将其"绑定"html控件上,比如下面这样,实在是很方便: using System; namespace...要想直接将后台变量绑定某个控件上却是行不通,通常我们得先定义一个类,然后在类里定义属性,才能把类实例属性绑定控件: 简单绑定: 代码 using System; using System.Windows...绑定集合(数据集): 很多应用场合,数据来源不仅只有一个实例(或一条记录)--比如从数据库检索记录,这时如果想绑定数据并实现自动更新,应使用集合绑定(类似于aspxDataSet或DataTable...要注意是,使用集合绑定并实现自动更新,除了要实现 INotifyPropertyChanged 外,还要实现 INotifyCollectionChanged。...,都是将数据原封不动绑定并显示,如果我们希望在绑定时,能对数据输出做一些变化,比如:代表性别的"1,0"输出希望变成"男,女",该怎么办呢?

    91070

    WPF --- 如何以Binding方式隐藏DataGrid列

    但实际测试就会发现,勾选 CheckBox 能够改变 DataContext.IsVisibility 值,但是无法触发转换器 VisibilityConverter,即使不用 RelativeSource...我疑惑了很久,直到看到了Visual Studio实时可视化树: 从图中可以看出,虽然我在 Xaml 声明了两列 DataGridTextColumn,但他根本不在可视化树。...那为什么 DataGridTextColumn 不在可视化树呢? 可视化树(Visula Tree) 在上面那个问题之前,先看看什么是可视化树? 我们先从微软文档来看一下WPF其他控件继承树。...比如 Button 比如 DataGrid : 又比如 ListBox : 大家可以去看看其他控件,几乎 WPF 中所有的控件都继承自 Visual(例如,Panel、Window、Button 等都是由...Visual 是 WPF 可视化对象模型基础,而 Visual 对象通过形成可视化树(Visual Tree)来组织所有可视化模型。

    41910

    WPF 多线程下跨线程处理 ObservableCollection 数据

    UI 线程 根据以上描述,可以了解,在 WPF 里面,如果有较多数据量,想要多线程处理 ObservableCollection 集合,可以采用在非 UI 后台线程创建 ObservableCollection...关联 UI 线程之前,对 ObservableCollection 任何处理都不会涉及到访问 UI 元素,因此也就没有了非 UI 线程不能访问 UI 元素限制。...完成之后,再将新 ObservableCollection 对象赋值给 UI 进行绑定 private async void Button2_Click(object sender, RoutedEventArgs...在 WPF 里面,只要一个集合类型对象继承了 INotifyCollectionChanged 接口,即可在集合变更时候,通过 WPF 框架监听 CollectionChanged 事件重新更新 UI...依靠此机制可以实现在后台线程处理,依然是让此 FooList 对应对象是绑定在 UI 线程上 使用 FooList 例子如下 private async void Button3_Click

    3.6K10

    《深入浅出WPF》学习笔记之深入浅出话Binding

    Explicit,源不会更新除非你手动来操作 LostFocus,一旦目标控件失去焦点,源就会被更新。 PropertyChanged,一旦绑定属性值改变,源会立即更新。...(Dependency Object)   *容器DataContext (WPF默认使用源)   *ElementName指定源:在C#代码把对象Name作为源赋给Binding   *RelativeSource...其实,“Binding沿着UI元素树网上找”只是WPF给我们一个错觉,实际是因为DataContext是一个“依赖属性”,当控件依赖属性没有显式赋值,依赖属性值会沿UI元素树向下传递。   ...但SliderValue是double,TextBoxText是string,当Source端Path所关联数据与Target端目标属性数据类型不一致,我们可以添加数据转换器。...像double与string这种简单转换,WPF类库已经做好了。   手动写Converter,方法是创建一个类并让这个类实现IValueConverter接口。

    5.5K10
    领券