Я использую DotNet 4.0, в моем приложении для Windows UserPermissionList связывается с сеткой данных.Это разрешение пользователя содержит два столбца, которые вручную создаются как DataGridTextColumn в datagrid. Но почему дополнительный пустой столбец отображается в сетке данных.Я добавил свойство AutoGenerateColumns = "False", хотя оно не работает.Как убрать пустой столбец в датагрид.Не могли бы вы помочь мне решить эту проблему?
<Window x:Class="DataGridSamples.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:DataGridSamples" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid Margin="5,5,15,5"> <Grid.ColumnDefinitions> <ColumnDefinition Width="120" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Label Grid.Column="0" Width="120" Content="User Roles:" /> <DockPanel Grid.Column="1"> <Border BorderBrush="DarkGray" Background="White" BorderThickness="2"> <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> <DataGrid Style="{DynamicResource DGHeaderStyle}" Background="White" HeadersVisibility="All" IsHitTestVisible="False" CanUserResizeRows="False" CanUserResizeColumns="False" CanUserSortColumns="False" IsTextSearchEnabled="True" IsReadOnly="True" CanUserAddRows="False" ItemsSource="{Binding Path=UserPermissionList}" CanUserReorderColumns="False" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="Role" Binding="{Binding Path=Role}"/> <DataGridTextColumn Header="Description" Binding="{Binding Path=Description}"/> </DataGrid.Columns> </DataGrid> </ScrollViewer> </Border> </DockPanel> </Grid> <Application x:Class="DataGridSamples.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:DataGridSamples" StartupUri="MainWindow.xaml"> <Application.Resources> <Style x:Key="DGHeaderStyle" TargetType="{x:Type DataGrid}"> <Setter Property="ColumnHeaderStyle" Value="{DynamicResource DGCHeaderStyle}"/> </Style> <Style x:Key="DGCHeaderStyle" TargetType="DataGridColumnHeader"> <Setter Property="Height" Value="22"/> <Setter Property="Foreground" Value="Black" /> <Setter Property="FontSize" Value="10" /> <Setter Property="FontFamily" Value="Arial" /> <Setter Property="FontWeight" Value="Bold"/> </Style> </Application.Resources> </Application>
Вы можете установить HorizontalAlignment свойство DataGrid на Left, если не хотите, чтобы оно растягивалось по горизонтали:
HorizontalAlignment
DataGrid
Left
<DataGrid ... HorizontalAlignment="Left">
Есть пустой столбец, потому что другие столбцы не заполняют всю ширину DataGrid.Чтобы изменить этот набор Width="*" для последнего столбца:
Width="*"
<DataGridTextColumn Header="Description" Width="*" Binding="{Binding Path=Description}"/>