WPF DataGrid重叠列

当我通过使用ScrollViewer.HorizontalScrollBarVisibility="Disabled"禁用水平滚动条(如下所示)时出现了问题,因此所有列都应适合。

我的DataGrid中有4列。第一个将Width设置为"*",而其他3个Width"Auto"。第三和第四列中有按钮。第三列包含两个按钮,其中一个可以将其Visibility设置为Collapsed

第一次显示在屏幕上时,带有按钮的最后两列彼此重叠,如下图所示:

WPF DataGrid重叠列

如您所见,DataGrid中有足够的空间。

如果我调整窗口大小或更改DataGrid的可见性,则下次出现时,列将正确显示。

代码:

<DataGrid AutoGenerateColumns="False" IsReadOnly="True" CanUserAddRows="False" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" HeadersVisibility="Column" SelectionUnit="FullRow" GridLinesVisibility="Horizontal" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.CanContentScroll="False" Margin="5">
    <DataGrid.Columns>
        <DataGridTemplateColumn Width="*">
            <DataGridTemplateColumn.HeaderTemplate>
                <DataTemplate>
                    <TextBlock Text="Text" />
                </DataTemplate>
            </DataGridTemplateColumn.HeaderTemplate>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Text}" TextTrimming="WordEllipsis" VerticalAlignment="Center" Padding="5" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Width="Auto">
            <DataGridTemplateColumn.HeaderTemplate>
                <DataTemplate>
                    <TextBlock Text="Enabled" />
                </DataTemplate>
            </DataGridTemplateColumn.HeaderTemplate>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox IsChecked="{Binding IsEnabled}" HorizontalAlignment="Center" VerticalAlignment="Center" Padding="5" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Width="Auto">
            <DataGridTemplateColumn.HeaderTemplate>
                <DataTemplate>
                    <TextBlock Text="Order" />
                </DataTemplate>
            </DataGridTemplateColumn.HeaderTemplate>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Button Command="{Binding Data.MoveOptionUpCommand,Source={StaticResource BindingProxy}}" commandparameter="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5">
                            <Button.Style>
                                <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
                                    <Style.Triggers>
                                        <Trigger Property="IsEnabled" Value="False">
                                            <Setter Property="Visibility" Value="Collapsed" />
                                        </Trigger>
                                    </Style.Triggers>
                                </Style>
                            </Button.Style>
                            <Image Source="/Resources/Images/Images16/Up.png" />
                        </Button>
                        <Button Command="{Binding Data.MoveOptionDownCommand,Source={StaticResource BindingProxy}}" commandparameter="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5">
                            <Button.Style>
                                <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
                                    <Style.Triggers>
                                        <Trigger Property="IsEnabled" Value="False">
                                            <Setter Property="Visibility" Value="Collapsed" />
                                        </Trigger>
                                    </Style.Triggers>
                                </Style>
                            </Button.Style>
                            <Image Source="/Resources/Images/Images16/Down.png" />
                        </Button>
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Width="Auto">
            <DataGridTemplateColumn.HeaderTemplate>
                <DataTemplate>
                    <TextBlock Text="actions" />
                </DataTemplate>
            </DataGridTemplateColumn.HeaderTemplate>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Button Command="{Binding Data.ShowOptionEditAreaCommand,Source={StaticResource BindingProxy}}" commandparameter="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5">
                            <Image Source="/Resources/Images/Images16/Edit.png" />
                        </Button>
                        <Button Command="{Binding Data.RemoveOptionsCommand,Source={StaticResource BindingProxy}}" commandparameter="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5">
                            <Image Source="/Resources/Images/Images16/Remove.png" />
                        </Button>
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

编辑:添加了XAML代码。

buyitgo 回答:WPF DataGrid重叠列

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3163779.html

大家都在问