gpt4 book ai didi

C# WPF - 如何删除 DataGrid 中的列

转载 作者:太空狗 更新时间:2023-10-30 00:18:42 47 4
gpt4 key购买 nike

我有这个简单的用户控件 (XAML):

<UserControl x:Class="finalProject_ClientX.queryResults"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="500" d:DesignWidth="500" Loaded="UserControl_Loaded">
<Grid Height="476" Background="#70BCE373">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="494" />
<ColumnDefinition Width="0*" />
<ColumnDefinition Width="6*" />
</Grid.ColumnDefinitions>
<DataGrid AutoGenerateColumns="true" Height="374" HorizontalAlignment="Left" Margin="27,51,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="448" SelectionChanged="dataGrid1_SelectionChanged" />
<Label Content="Query Results" Height="54" HorizontalAlignment="Stretch" Margin="27,0,19,0" Name="label1" VerticalAlignment="Top" DataContext="{Binding}" FontFamily="Tunga" FontSize="36" FontWeight="Bold" FontStyle="Normal" Opacity="1" Foreground="#FF0059B3" HorizontalContentAlignment="Center" />
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="189,441,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
</Grid>

然后我按照这个方法设置表格行数:

public void setList<T>(List<T> list)
{
dataGrid1.ItemsSource = list;

//dataGrid1.Columns.RemoveAt(1);
dataGrid1.Columns[1].Visibility = Visibility.Collapsed;
}

该方法获取一个通用列表,并在 dataGrid 中设置该列表。但是我得到了另一个字段,该字段未包含在类(class)中。该字段是“ExtensionData”。 . .

我尝试使用以下行删除/隐藏此列:

dataGrid1.Columns[1].Visibility = Visibility.Collapsed; 

dataGrid1.Columns.RemoveAt(1);

'1' 因为它总是第一列('0' 也不起作用)。我得到这个错误:

An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll

附加信息:索引超出范围。必须是非负数 并且小于集合的大小。

最佳答案

AutoGeneratingColumn 添加到您的 DataGrid:

<DataGrid AutoGenerateColumns="true"
AutoGeneratingColumn="DataGrid_OnAutoGeneratingColumn"/>

在你的代码后面有一个方法:

private void DataGrid_OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "ExtensionData")
{
e.Column = null;
}
}

这应该删除给定名称的不需要的列。但一般来说,最好在将列表提供给 DataGrid 之前从列表中删除不需要的列表项。确实没有列不在您的列表中。

关于C# WPF - 如何删除 DataGrid 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32206954/

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