DataGrid 周围的 WPF ScrollViewer 影响 DataGridColumn 宽度

问题描述 投票:0回答:0

我在 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>

my problem

我需要我的列能够自动调整大小和列错误消息以填充所有可用空间。所有这些都在 ScrollViewer 中,这是这个视图和许多其他视图 (UserControls) 所必需的,所以我无法摆脱它。
在 MainWindow 中没有 ScrollViewer 一切正常(列错误消息填充所有可用空间,能够调整大小并且 GridView 没有空的最后一列):
without ScrollViewer 1
without ScrollViewer 2
解决方案解决方案 1(设置 GridView.HorizontalScrollBarVisibility="Disabled")不起作用(因为我猜整个 UserControl 都在 ScrollViewer 中)
解决方案 解决方案 2 也无法按我的意愿工作 - DataGrid 变得能够增加其宽度但不能减少,因此列错误消息会填充所有可用空间,但前提是窗口正在伸展。
请帮忙,这是我的毕业作品。

wpf xaml datagrid scrollviewer
© www.soinside.com 2019 - 2024. All rights reserved.