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