1

内部にグリッドがあるウィンドウがあります:

<Grid KeyboardNavigation.TabNavigation="Local">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" MinHeight="70" />
        <RowDefinition Height="*" />
        <RowDefinition Height="25" />
    </Grid.RowDefinitions>

    <ContentControl Grid.Row="0" Content="{Binding ChildViewModel.View}" />

    <DockPanel Grid.Row="1" Visibility="{Binding SearchResultViewVisibility}">
        <GridSplitter DockPanel.Dock="Top" Background="LightGray" Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Top" IsTabStop="False"/>
        <Views:SearchResultView DataContext="{Binding SearchResultViewModel}" />
    </DockPanel>

    <UserControls:GradientBackgroundControl Grid.Row="2" Height="25">
        <Validators:FocusSummaryControl x:Name="FocusSummary" ValidateOnlyFocusedElement="False" />
    </UserControls:GradientBackgroundControl>
</Grid>

ContentControl は、次の Grid セットで UserControl を取得します。

<Grid KeyboardNavigation.TabNavigation="Local">
<Grid.RowDefinitions>
    <RowDefinition />
    <RowDefinition Height="35" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="80" />
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="80" />
    <ColumnDefinition Width="80" />
</Grid.ColumnDefinitions>

<ScrollViewer Grid.Row="0" Grid.ColumnSpan="4">
    <StackPanel>
        ...
    </StackPanel>
</ScrollViewer>

問題は、UserControl の ScrollViewer がスクロールしないことです。ContentControl に設定された UserControl のコンテンツはより重く、オーバーフローは隠されています。

4

2 に答える 2

0

私が間違っていない場合、StackPanelは設計上、(方向に基づいて)一方向に大きくなるため、スクロール機能を機能させるには、StackPanelで高さを設定する必要があります。

これが問題の原因であるかどうかを確認するには、StackPanelの高さを固定の高さに設定してテストしてください。または、StackPanelをDockPanelなどに置き換えて、動作を確認することもできます。また、いじくり回したいScrollViewer.CanContentScrollプロパティがあります。

このテストの結果を教えてください。

于 2012-12-14T12:04:38.787 に答える