WPF数据表格没有显示滚动条并且超出可见区域

6
像其他人一样,我有一个DataGrid,没有显示滚动条。我认为我的情况比较特殊的是,在可视或逻辑树中没有看到StackPanel。我正在使用WPF Inspector查看树形结构。我尝试了各种建议来设置包含Grid列和行的高度和宽度,但都没有成功。我确定有些东西让内容超出了可见区域,但我还不知道是什么。如果您有任何帮助,将不胜感激。这个应用程序是一个使用MEF的WPF Prism应用程序,DataGrid位于UserControl中,而UserControl又在Prism区域中。
Shell Window XAML:
<Window>
  <Grid x:Name="GridOuterShell">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <ribbon:Ribbon Grid.Row="0" >
        ...
    </ribbon:Ribbon>

    <Grid x:Name="GridShellContent" Grid.Row="1">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition Height="Auto" />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="350" MinWidth="300"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>


        <local:RegionBorderControl Grid.Row="0" Grid.Column="0" Grid.RowSpan="3" Margin="2,2,8,2" RegionName="{Binding MainRegionDisplayName}"
                               Style="{DynamicResource RegionBorderControlStyle}">
        <ContentControl prism:RegionManager.RegionName="MainRegion"
                        VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"/>

        </local:RegionBorderControl>


        <GridSplitter Grid.Row="0" Grid.Column="1" Grid.RowSpan="3" HorizontalAlignment="Center" VerticalAlignment="Stretch"
                  Width="3" ShowsPreview="True" ResizeDirection="Columns" />

        <local:RegionBorderControl Grid.Row="0" Grid.Column="2" RegionName="{Binding RightTopRegionDisplayName}"
                               Style="{DynamicResource RegionBorderControlStyle}">
        <ContentControl prism:RegionManager.RegionName="RightTopRegion"
                        VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"/>

        </local:RegionBorderControl>

        <GridSplitter Grid.Row="1" Grid.Column="3" HorizontalAlignment="Stretch" VerticalAlignment="Center"
                  Height="3" ShowsPreview="true" ResizeDirection="Rows" ResizeBehavior="PreviousAndNext" Background="Silver"/>

        <local:RegionBorderControl Grid.Row="2" Grid.Column="2" RegionName="{Binding RightBottomRegionDisplayName}"
                               Style="{DynamicResource RegionBorderControlStyle}">
            <ContentControl prism:RegionManager.RegionName="RightBottomRegion"/>

        </local:RegionBorderControl>

    </Grid>

    <StatusBar Grid.Row="2">
        ...
    </StatusBar>

  </Grid>
</Window>

UserControl XAML:

<UserControl>

<Grid x:Name="GridMain">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition />
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <DockPanel Grid.Row="0" LastChildFill="False" HorizontalAlignment="Stretch" Width="Auto" >
            <ToolBar x:Name="tbToolBar" DockPanel.Dock="Left" Background="{x:Null}">
                ...
            </ToolBar>
        </DockPanel>

        <DataGrid AutoGenerateColumns="False" Grid.Row="2" Name="DataGridList" ItemsSource="{Binding MyItems}" IsReadOnly="True" CanUserResizeRows="False" SelectionMode="Single" 
                    SelectedItem="{Binding Path=SelectedDataGridRecord, Mode=TwoWay}" Style="{StaticResource DataGridDefault}" >
            <DataGrid.Columns>
                ...
            </DataGrid.Columns>
        </DataGrid>

    </Grid>

1个回答

17

您在一个行定义高度为自动的网格行中放置了数据网格,因此该网格将以无限高度进行测量,并按其DesiredSize.Height进行排列,永远不会显示滚动条。看起来应该将该网格放在第1行或使第2行的高度为*而不是auto。


这解决了我的问题。谢谢Andrew。我敢肯定我试过了。很抱歉发布了这样一个明显的疏忽,但我非常确定它是这样的,因为别的都不合理。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接