gpt4 book ai didi

使用 MVVM 的 WPF Datagrid .. 是否可以通过两种方式绑定(bind)到 DataTable?

转载 作者:行者123 更新时间:2023-12-03 10:24:52 26 4
gpt4 key购买 nike

我的 View 中有一个数据网格,它的 ItemSource 绑定(bind)到我的 ViewModel 中的 DataTable。当我以编程方式更新 DataTable(通过命令添加列)时,更改不会填充到 View 中。此外,如果我通过切换到另一个选项卡然后切换回来使 View 无效,则会显示所做的更改。

我的 ViewModel 继承自 INotifyPropertyChanged,并且我正确地引发了 PropertyChanged 事件,因为我对 ViewModel 中的其他绑定(bind)属性使用相同的过程并且它们按预期工作。

是否可以让数据网格反射(reflect)我使用 MVVM 模式对绑定(bind) DataTable 所做的更改?

是否有数据网格事件可以用来刷新 View 代码中的数据网格?

谢谢你的帮助!
-史蒂文

最佳答案

虽然在 DataTable 中修改行和编辑单元格内容会反射(reflect)在 DataGrid 中(对我有用),但 ColumnChanges 似乎并非如此。如果您使用 AutoGenerateColumns 选项,那么我想它会在初始化时这样做,但之后不会注意更改。

如果您可以在将列添加到 DataTable 时找到触发的事件(我没有注意到),那么您可以在后面的代码中手动添加它。另一个可能可行或不可行的技巧是将您的 DataTable 属性设置为 null,然后将您的属性重新设置为 DataTable,每次都调用 OnPropertyChanged。这应该会强制重建 DataGrid。

private DataTable _myDataTable;

public DataTable MyDataTable
{
get { return _myDataTable; }
set
{
_myDataTable = value;
OnPropertyChanged("MyDataTable");
}
}

void SomeMethod()
{
....results in column changes
DataTable holder;
holder = MyDataTable
MyDataTable = null;
MyDataTable = holder;
}

关于使用 MVVM 的 WPF Datagrid .. 是否可以通过两种方式绑定(bind)到 DataTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com