1

ScrollViewer基本クラス ( Window) に設定され、ユーザー コントロールがウィンドウのコンテンツとして動的に追加される状況があります。ToolBarここで、ユーザー コントロール内のコントロール ( ) の 1 つをスクロールから除外する必要があります (上部に表示されたままにするため)。HandlesScrollingクラスにプロパティがあることは知っていますControlが、それは内部です。ScrollViewerツールバーにアクセスできないため、ツールバーを外部に配置する方法がありません。これを行う方法はありますか?

4

1 に答える 1

1

私が考えることができる唯一の方法は、コントロールのサイズ自体を外側にしてから、スクロールを処理するScrollViewer独自の内側にすることです。ScrollViewer以下にいくつかのサンプルコードがありますが、キーは次HeightのようにコントロールのをActualHeight外側のにバインドしていますScrollerViewer:Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type ScrollViewer}}}"

外部スクロールビューア:

<ScrollViewer>
    <ListBox:HandlesItsOwnScrolling />
</ScrollViewer>

あなたのコントロール:

<UserControl x:Class="ListBox.HandlesItsOwnScrolling"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300" Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type ScrollViewer}}}" >
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button Grid.Row="0">Toolbar</Button>
        <ScrollViewer Grid.Row="1">
            <Border Background="AliceBlue" Height="1000" />
        </ScrollViewer>
    </Grid>
</UserControl>
于 2012-11-06T15:14:47.493 に答える