WPF Datagrid 动态绑定Datatable 后台删除列后,列名不更新的问题

weixin_46896710 2021-07-10 16:18:22

这是viewmodel

这是界面

<DataGrid
            x:Name="dataGrid"
            Grid.Row="1"
            Margin="5"
            AlternationCount="2"
            CanUserAddRows="False"
            ItemsSource="{Binding UserData, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="编辑">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <Button
                                    Command="{Binding SaveCmd}"
                                    CommandParameter="{Binding}"
                                    Content="保存修改" />
                                <Button
                                    Command="{Binding DelCmd}"
                                    CommandParameter="{Binding}"
                                    Content="删除属性" />
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
            <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Style.Triggers>
                        <Trigger Property="AlternationIndex" Value="0">
                            <Setter Property="Background" Value="White" />
                        </Trigger>
                        <Trigger Property="AlternationIndex" Value="1">
                            <Setter Property="Background" Value="LightCyan" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.RowStyle>
        </DataGrid>

这是绑定命令的方法

public void DeleteColumn(string columnName)
        {
            if (_userData == null)
            {
                return;
            }
            for (int i = 0; i < _userData.Columns.Count; i++)
            {
                if (columnName == _userData.Columns[i].ColumnName)
                {
                    _userData.Columns.RemoveAt(i);
                    return;
                }
            }
        }
private void AddColumn(string columnName)
        {
            if (_userData == null)
            {
                return;
            }
            for (int i = 0; i < _userData.Columns.Count; i++)
            {
                if (_userData.Columns[i].ColumnName == columnName)
                {
                    return;
                }
            }
            _userData.Columns.Add(columnName);
        }

折腾了一下午没搞出来,另外还有二个问题,

1. 修改和保存的按钮怎么移动到最末尾啊?

2. 最后为啥还有个空列啊,怎么消除?

...全文
1193 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-微软技术 发布问题, 以便更快地解决您的疑问

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧