WPF MvvM DataGrid数据不刷新的原因
后台修改前台不刷新可能的原因:
1.前台页面没有写Binding
2.后台数据定义的字段没有get和set
3.数据容器没有使用ObservableCollection
4.字段内容修改时没有重置数据源
首先简单举例界面代码如下:
<DataGrid Name="DG" ItemsSource="{Binding}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="姓名" Binding="{Binding Name}" /> </DataGrid.Columns> </DataGrid>
必须对DataGrid设置 ItemsSource="{Binding}"
字段设置必须写 Binding="{Binding Name}"
对应数据为:
public class DataItem { public string Name { get; set; } }
字段名称必须和页面保持一致,字段必须是属性,包含get和set
定义成员变量:
ObservableCollection<DataItem> m_data = new ObservableCollection<DataItem>();
关联前后台数据:
DG.ItemsSource = m_data;
ObservableCollection容器用法类似于List,这玩意可以在增加、删除(也就是Count发生变化)元素时发出通知。
所以我们在后台增加数据: DataItem cm = new DataItem(); cm.Name = "AA"; m_data.Add(cm); 界面会发生变化
在后台删除数据: m_data_data.RemoveAt(0); 界面也会发生变化
但是我们修改数据: m_data[0].Name = "MM"; 此时界面并不会发生变化(因为Count没有发生变化。。。)
所以这个时候 DG.ItemsSource = null; DG.ItemsSource = m_data; 界面就可以变化了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异