c# - 在 MVVM 环境中删除 DataGrid 中的列
问题描述
我正在尝试从 DataGrid 中删除一整列。我的 DataGrid Itemsource 绑定到 Datatable。当我从 DataTable 中删除列时,DataGrid 中行的内容消失了,但标题和空框一样保留。
我尝试在我的视图模型中添加一个 DataGrid 并将 dataGrid 绑定到它,但它似乎没有任何效果,我的代码变得非常丑陋。我可以在后面的代码中添加一个按钮来删除它:
TestDG.Columns.RemoveAt(idNum);
但这似乎不是正确的方法,我希望它与视图模型相关联以进行错误检查等。似乎 DataTable 和 DataGrid 可能会在 2 个不同的位置不同步删除。
我的 Datagrid 的 Xaml:
<DataGrid x:Name="dataGrid" ItemsSource="{Binding DTLines}" CanUserAddRows="False" ColumnWidth="*">
</DataGrid>
我的视图模型中的代码
...
public DataTable DTLines
{
get
{
return testDT;
}
set
{
testDT = value;
OnPropertyChanged("DTLines");
}
}
...
private void ExecuteCloseLang()
{
TestDT.Columns.Remove("German");
// What do I put here to remove the line?
}
如果您需要任何其他澄清,请告诉我。
解决方案
视图模型不应该知道视图中某些列的任何信息DataGrid
。视图或控件本身应该负责在DataGrid
.
因此,当从 中删除列时,您的视图模型可能应该通知视图,DataTable
然后视图应该从 中删除该列DataGrid
以响应此操作。我猜这可能是你目前正在做的事情。
不要尝试DataGrid
从视图模型中引用自身。修改时引发事件DataTable
并在视图中处理此事件。
推荐阅读
- angular - Ionic 4 加载符号在 observable 解析之前消失
- python - 是否可以创建一个 Altair 绑定到 datalist 元素而不是 select?
- python - Python Chromedriver 结束任务烦人的闪烁
- python - Pyspark:将列分解为新的数据框
- sql - ORA-00937 使用 CASE 条件时不是单组组函数
- react-native - 将侦听器添加到 Diff Clamp,React Native
- chainer - Chainer:基于时间限制提前停止的自定义扩展
- c# - 如何接口 IGrouping
产生多个值? - python - 使用 ctypes 在 python 中调用 C++ 函数
- r - 如何根据 R 中的 group_by 函数对列中的所有唯一因子求和并输出为新列?