web-dev-qa-db-ja.com

WPF ScrollViewerでスクロールバーの幅を増やす方法は?

私は小さなデバイスのタッチスクリーンで作業していますが、私の要求の1つはすべてを指のジェスチャーで実行できる必要があるということなので、スクロールバーのカスタム幅は適切ではありません。

WPF ScrollViewerスクロールバーの幅を設定するにはどうすればよいですか?

デバイスのすべてのスクロールバーの幅を変更したくないことに注意してください(Windowsの設定から実行可能)-アプリ内のスクロールバーのみ。

31
JohnIdol

ScrollBarテンプレートは、(向きに応じて)その幅/高さを決定するためのシステムパラメータを取得します。したがって、これらのパラメーターをオーバーライドできます。

<ScrollViewer>
    <ScrollViewer.Resources>
        <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">100</sys:Double>
    </ScrollViewer.Resources>
</ScrollViewer>
55
Kent Boogaart

XAMLソリューションは次のとおりです。

<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
    <Setter Property="Stylus.IsFlicksEnabled" Value="True" />
    <Style.Triggers>
        <Trigger Property="Orientation" Value="Horizontal">
            <Setter Property="Height" Value="40" />
            <Setter Property="MinHeight" Value="40" />
        </Trigger>
        <Trigger Property="Orientation" Value="Vertical">
            <Setter Property="Width" Value="40" />
            <Setter Property="MinWidth" Value="40" />
        </Trigger>
    </Style.Triggers>
</Style>
19
Kulvir

ケントの回答は、App.xamlリソースに配置し、水平方向の高さキーを指定することで、アプリケーションのすべてのスクロールバーにも簡単に適用できます。

<Application
    xmlns:sys="clr-namespace:System;Assembly=mscorlib"
    ...
>
    <Application.Resources>
        <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">50</sys:Double>
        <sys:Double x:Key="{x:Static SystemParameters.HorizontalScrollBarHeightKey}">50</sys:Double>
    </Application.Resources>
</Application>
18
DuckMaestro