gpt4 book ai didi

c# - 取消隐藏 WPF 中的 Datagrid 列

转载 作者:行者123 更新时间:2023-11-30 22:21:17 25 4
gpt4 key购买 nike

我正在开发一个 WPF 应用程序。我的应用程序中有一个 datagrid 我创建了一个上下文菜单来隐藏和取消隐藏 datagrid 的列标题,同时将 datagrid 的项目源分配给 IEnumerable 集合。

 this.dataGrid1.ItemsSource = objref.Result;


grid_data = objref.Result;
cxMenu = new ContextMenu();

foreach (Microsoft.Windows.Controls.DataGridColumn item in dataGrid1.Columns)
{
menuItem = new MenuItem();
menuItem.Header = item.Header;
menuItem.IsChecked = true;
cxMenu.Items.Add(menuItem);
menuItem.Click += new RoutedEventHandler(menuItem_Click);
menuItem.Checked += new RoutedEventHandler(menuItem_Checked);
menuItem.Unchecked += new RoutedEventHandler(menuItem_Unchecked);
}

一切正常。当我取消选中列已成功删除但当我再次检查我的 ContextMenuMenuItem 时,它没有被添加。

我的检查事件的处理程序如下。

 void menuItem_Checked(object sender, RoutedEventArgs e)
{
MenuItem item = sender as MenuItem;
dataGrid1.ItemsSource = null;
dataGrid1.ItemsSource = objref.Result;// Again assgining the whole set to itemssource
List<string> menuList = new List<string>();
menuList.Clear();



foreach (MenuItem menuItem in cxMenu.Items)
{
if (menuItem.IsChecked == false)
{
menuList.Add(menuItem.Header.ToString());
}
}

Functionsclass objref = new Functionsclass();


foreach (string menuItem in menuList)
{
foreach (Microsoft.Windows.Controls.DataGridColumn column in dataGrid1.Columns)
{
if (column.Header.ToString() == menuItem)
{
dataGrid1.Columns.Remove(column);
break;
}
}
}
}

但是我再次检查时,我的专栏没有添加。请帮我解决这个问题。

更新 2:

 void menuItem_Click(object sender, RoutedEventArgs e)
{
MenuItem item = sender as MenuItem;
if (item.IsChecked)
{
item.IsChecked = false;
}
else
{
item.IsChecked = true;
}
}

void menuItem_Unchecked(object sender, RoutedEventArgs e)
{
MenuItem item = sender as MenuItem;
foreach (Microsoft.Windows.Controls.DataGridColumn column in dataGrid1.Columns)
{
if (column.Header.ToString().Contains(item.Header.ToString()))
{
dataGrid1.Columns.Remove(column);
break;
}
}
}

取消选中处理程序。

最佳答案

如果您只想隐藏/显示列,我认为删除/添加列不是正确的方法。我建议您使用列的 Visibility 属性。将其设置为 Visibility.Collapsed 以隐藏它,然后设置为 Visibility.Visible 使其再次可见。

column.Visibility = Visibility.Collapsed; // Column is hidden

column.Visibility = Visibility.Visible; //Column is Visible

关于c# - 取消隐藏 WPF 中的 Datagrid 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14477310/

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