41

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

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

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

4

4 に答える 4

75

テンプレートは、システム パラメーターに到達して、ScrollBarその幅/高さを決定します (向きによって異なります)。したがって、これらのパラメーターをオーバーライドできます。

<ScrollViewer>
    <ScrollViewer.Resources>
        <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">100</sys:Double>
    </ScrollViewer.Resources>
</ScrollViewer>
于 2009-08-24T09:12:04.243 に答える
31

ケントの答えは、リソースに配置し、水平高さキーも指定することで、アプリケーション内のすべてのスクロールバーに簡単に適用できます。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>
于 2013-09-02T00:27:13.313 に答える
27

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>
于 2012-08-15T17:07:17.203 に答える
3

また、XAML を使用したくない場合は、Applicationのコンストラクターで実行できます。

using System.Windows;

public partial class App
{
    public App()
    {
        Resources.Add(SystemParameters.VerticalScrollBarWidthKey, 50d);
        Resources.Add(SystemParameters.HorizontalScrollBarHeightKey, 50d);
    }
}
于 2020-04-21T10:22:09.587 に答える