当我通过使用ScrollViewer.HorizontalScrollBarVisibility="Disabled"
禁用水平滚动条(如下所示)时出现了问题,因此所有列都应适合。
我的DataGrid中有4列。第一个将Width
设置为"*"
,而其他3个Width
是"Auto"
。第三和第四列中有按钮。第三列包含两个按钮,其中一个可以将其Visibility
设置为Collapsed
。
第一次显示在屏幕上时,带有按钮的最后两列彼此重叠,如下图所示:
如您所见,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代码。