在MVVM环境中删除DataGrid中的列

时间:2018-08-15 18:44:24

标签: c# wpf mvvm

我正在尝试从DataGrid删除整个列。我的DataGrid项目源绑定到一个数据表。当我从DataTable中删除该列时,DataGrid中的行内容消失了,但标题和空白框都保留了。

我尝试在我的视图模型中添加一个DataGrid并将其绑定到该DataGrid,但是它似乎没有任何效果,并且我的代码变得非常难看。我能够添加一个按钮以使用以下代码将其删除:

<E> void foo(List<E> something)

但这似乎不是正确的方法,我希望它与视图模型捆绑在一起以进行错误检查等。看来DataTable和DataGrid可能无法在2个不同位置进行同步删除。

我的Datagrid Xaml:

TestDG.Columns.RemoveAt(idNum);

我的视图模型中的代码

<DataGrid x:Name="dataGrid" ItemsSource="{Binding DTLines}" CanUserAddRows="False" ColumnWidth="*">            
    </DataGrid>

如果您还有其他需要澄清的地方,请告诉我。

1 个答案:

答案 0 :(得分:0)

视图模型对视图中的DataGrid中的某些列一无所知。视图或控件本身应该负责在DataGrid中添加或删除列。

因此,当从DataTable中删除一列时,您的视图模型应该通知该视图,然后视图应从DataGrid中删除该列以响应此操作。我想这大概是您目前正在做的事情。

不要尝试从视图模型中引用DataGrid本身。修改DataTable时引发一个事件,并在视图中处理该事件。