【问题标题】:Why additional column is showing in WPF DataGrid为什么在 WPF DataGrid 中显示附加列
【发布时间】:2019-03-26 14:37:50
【问题描述】:

我正在使用 DotNet 4.0,在我的 Windows 应用程序中,UserPermissionList 与数据网格绑定。此用户权限包含两列,它们是在 datagrid 中手动创建为 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>

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    如果您不想水平拉伸,可以将DataGridHorizontalAlignment 属性设置为Left

    <DataGrid ... HorizontalAlignment="Left">
    

    【讨论】:

    • 当最后一列数据超过数据网格宽度时水平滚动条没有出现?但垂直滚动条工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2014-11-08
    • 1970-01-01
    • 2017-08-03
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多