数据网格不会立即更新
本文关键字:更新 数据网 网格 数据 | 更新日期: 2023-09-27 18:37:14
在我的程序中,我有一个通过MVVM实现的DataGrid
。在这个DataGrid
旁边是一个按钮,用于执行我命名的命令"向下填充"。它采用其中一列并将字符串复制到该列中的每个单元格。问题是视图不会进行更改,直到我更改页面,然后返回带有DataGrid
的页面。为什么会发生这种情况,我该怎么做才能解决它?
XAML:
<Button Command="{Binding FillDown}" ... />
<DataGrid ItemsSource="{Binding DataModel.Collection}" ... />
视图模型:
private Command _fillDown;
public ViewModel()
{
_fillDown = new Command(fillDown_Operations);
}
//Command Fill Down
public Command FillDown { get { return _fillDown; } }
private void fillDown_Operations()
{
for (int i = 0; i < DataModel.NumOfCells; i++)
{
DataModel.Collection.ElementAt(i).cell = "string";
}
//**I figured that Notifying Property Change would solve my problem...
NotifyPropertyChange(() => DataModel.Collection);
}
- 请让我知道您是否还有您想看到的代码。
是的,对不起,我的收藏是一个ObservableCollection
在属性的集合器中调用 NotifyPropertyChanged():
public class DataItem
{
private string _cell;
public string cell //Why is your property named like this, anyway?
{
get { return _cell; }
set
{
_cell = value;
NotifyPropertyChange("cell");
//OR
NotifyPropertyChange(() => cell); //if you're using strongly typed NotifyPropertyChanged.
}
}
}
侧面评论:
更改此内容:
for (int i = 0; i < DataModel.NumOfCells; i++)
{
DataModel.Collection.ElementAt(i).cell = "string";
}
对此:
foreach (var item in DataModel.Collection)
item.cell = "string";
这更干净易读。