4

次の内容のウィンドウがあります。

<Grid>
    <ScrollViewer x:Name="Outer" CanContentScroll="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="2*" />
            </Grid.RowDefinitions>
            <ScrollViewer x:Name="Inner1" CanContentScroll="True" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Auto">
                <DataGrid HorizontalAlignment="Stretch" MinWidth="700" >
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn Header="Column A" />
                        <DataGridCheckBoxColumn Header="Column B" />
                    </DataGrid.Columns>
                </DataGrid>
            </ScrollViewer>
            <TextBox Width="500" Grid.Row="1" HorizontalAlignment="Left"/>
            <ScrollViewer x:Name="Inner2" Grid.Row="1" CanContentScroll="True" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Auto">
                <DataGrid HorizontalAlignment="Stretch" >
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn Header="Column С" />
                        <DataGridCheckBoxColumn Header="Column В" />
                    </DataGrid.Columns>
                </DataGrid>
            </ScrollViewer>
        </Grid>
    </ScrollViewer>
</Grid>

私の目標は次のことです: ウィンドウのコンテンツの幅がウィンドウの幅よりも小さい場合、外側の水平スクロールバーが表示されます。データグリッドの列幅を増やすと、このデータグリッドの水平スクロールバーのみが表示されます。

私をブロックするもの:

データグリッドの列幅を増やすと、データグリッドのサイズが変更され、非アクティブな「 Inner1 」の代わりに「 Outer」水平スクロールバーが表示されます。

実際、私のアプリにはフレーム コントロールのあるウィンドウがあります。フレームはカスタム コンテンツを含むページを読み込み、ページ サイズはウィンドウ サイズよりも大きくなる場合があります。フレーム コントロールは ScrollViewer でラップされます。データグリッドに行がない場合でも、列幅が変更されたときに水平スクロールバーを表示するために、スクロールビューアーでラップされたいくつかの DataGrid がページに含まれています。したがって、データグリッドの列幅を大きくすると、データグリッドのサイズが変更されます->データグリッドがページ全体のサイズを変更します->フレームをラップするスクロールビューアーが表示されます。列幅が変更されたときにデータグリッドのサイズ変更を無効にすることはできますか?

4

1 に答える 1

-1

それらは同じグリッド行内にネストされているため、両方にトップレベルのスクロール ビューアーを使用していたようです。これは修正ですが、それがあなたが望むものかどうかはわかりません。

  <Window x:Class="NestedScrollViewer.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <ScrollViewer x:Name="Outer" CanContentScroll="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
            <Grid>
                <DataGrid HorizontalAlignment="Stretch" >
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn Header="Column A" />
                        <DataGridCheckBoxColumn Header="Column B" />
                    </DataGrid.Columns>
                </DataGrid>
            </Grid>
        </ScrollViewer>
        <ScrollViewer x:Name="Inner2" Grid.Row="1" CanContentScroll="false" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Auto">
            <Grid>
                <DataGrid HorizontalAlignment="Stretch" >
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn Header="Column С" />
                        <DataGridCheckBoxColumn Header="Column В" />
                    </DataGrid.Columns>
                </DataGrid>
            </Grid>
        </ScrollViewer>
    </Grid>
</Window>
于 2015-07-22T15:54:42.277 に答える