我有这个简单的用户控件(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>
Run Code Online (Sandbox Code Playgroud)
我根据这个方法设置表行:
public void setList<T>(List<T> list)
{
dataGrid1.ItemsSource = list;
//dataGrid1.Columns.RemoveAt(1);
dataGrid1.Columns[1].Visibility = Visibility.Collapsed;
}
Run Code Online (Sandbox Code Playgroud)
该方法获取通用列表,并在dataGrid中设置列表.但我得到另一个领域,这个领域没有包括在内.该字段是"ExtensionData".
.
我尝试用以下行删除/隐藏此列:
dataGrid1.Columns[1].Visibility = Visibility.Collapsed;
Run Code Online (Sandbox Code Playgroud)
要么
dataGrid1.Columns.RemoveAt(1);
Run Code Online (Sandbox Code Playgroud)
'1'因为它总是第一列('0'也不工作).我收到这个错误:
mscorlib.dll中发生未处理的"System.ArgumentOutOfRangeException"类型异常
附加信息:指数超出范围.必须是非负数且小于集合的大小.
添加AutoGeneratingColumn到您的DataGrid:
<DataGrid AutoGenerateColumns="true"
AutoGeneratingColumn="DataGrid_OnAutoGeneratingColumn"/>
Run Code Online (Sandbox Code Playgroud)
你的代码背后有一个方法:
private void DataGrid_OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "ExtensionData")
{
e.Column = null;
}
}
Run Code Online (Sandbox Code Playgroud)
这应该删除给定名称的不需要的列.但一般情况下,最好先从列表中删除不需要的列表项,然后再将列表提供给您DataGrid.真的不能列在你的列表中.
| 归档时间: |
|
| 查看次数: |
3699 次 |
| 最近记录: |