我在 ScrollViewer 内的 UserConrol 中遇到 DataGrid 问题。
MainWindow 中有一个 ScrollViewer 和一个 ContentControl 来呈现多个视图(UserControls):
<Border Grid.Column="2" Grid.Row="2" Margin="0, 1, 1, 0" Style="{StaticResource StackPanelBorder}">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<ContentControl Content="{Binding CurrentView}"/>
</ScrollViewer>
</Border>
UserControl(完整结构(简化)):
<Grid>
<Grid>
<Grid>
<Border BorderBrush="Black" BorderThickness="1">
<DataGrid HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="auto" AutoGenerateColumns="False" ItemsSource="{Binding ActiveErrors}" CanUserResizeColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Index" Binding="{Binding Key}"></DataGridTextColumn>
<DataGridTextColumn Header="Error code" Binding="{Binding Value.errorCode}"></DataGridTextColumn>
<DataGridTextColumn Header="Occurences" Binding="{Binding Value.occurence}"></DataGridTextColumn>
<DataGridTextColumn Header="Timestamp" Binding="{Binding Value.timestamp}"></DataGridTextColumn>
<DataGridTextColumn Width="*" MinWidth="200" Header="Error message" Binding="{Binding Value.description}"></DataGridTextColumn>
<DataGridTextColumn Header="Param" Binding="{Binding Value.parameter}"></DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="FontWeight" Value="Medium"/>
</Style>
</DataGrid.CellStyle>
</DataGrid>
</Border>
</Grid>
</Grid>
</Grid>
我需要我的列能够自动调整大小和列错误消息以填充所有可用空间。所有这些都在 ScrollViewer 中,这是这个视图和许多其他视图 (UserControls) 所必需的,所以我无法摆脱它。
在 MainWindow 中没有 ScrollViewer 一切正常(列错误消息填充所有可用空间,能够调整大小并且 GridView 没有空的最后一列):
解决方案解决方案 1(设置 GridView.HorizontalScrollBarVisibility="Disabled")不起作用(因为我猜整个 UserControl 都在 ScrollViewer 中)
解决方案 解决方案 2 也无法按我的意愿工作 - DataGrid 变得能够增加其宽度但不能减少,因此列错误消息会填充所有可用空间,但前提是窗口正在伸展。
请帮忙,这是我的毕业作品。