Почему я не могу получить большой палец на стилизованной полосе прокрутки в WPF - PullRequest
1 голос
/ 28 марта 2010

Я взял шаблоны MSDN для оформления полосы прокрутки и пытался применить свои разные стили (изображение на каждом повторителе дорожки и отдельное изображение на большом пальце), но я не могу изменить размер большого пальца.

Я попытался установить ширину на дорожке. Стиль Thumb, а также в ControlTemplate самого большого пальца. По какой-то причине размер по умолчанию отображается только тогда, когда большой палец на самом деле занимает гораздо больше места. Кто-нибудь знает, как сделать так, чтобы большой палец отображал нужный мне размер?

XAML, который я использую для стилей, находится здесь:

 <Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}">
        <Setter Property="Background" Value="Red" />
        <Setter Property="OverridesDefaultStyle" Value="True"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Thumb}">
                    <Image Source="sampleimg.png"  Stretch="Fill" />                        
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <ControlTemplate x:Key="ArfleHBar" TargetType="{x:Type ScrollBar}">
        <Grid >
            <Grid.ColumnDefinitions>
                <ColumnDefinition MaxWidth="18"/>
                <ColumnDefinition Width="0.00001*"/>
                <ColumnDefinition MaxWidth="18"/>
            </Grid.ColumnDefinitions>               
            <RepeatButton Grid.Column="0" Style="{StaticResource ScrollBarLineButton}" Width="18" Command="ScrollBar.LineLeftCommand" Content="M 4 0 L 4 8 L 0 4 Z" />
            <Track Name="PART_Track" Grid.Column="1" IsDirectionReversed="False" >                    
                <Track.DecreaseRepeatButton>
                    <RepeatButton  Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageLeftCommand" Width="100"/>
                </Track.DecreaseRepeatButton>
                <Track.Thumb>
                    <Thumb  Style="{StaticResource ScrollBarThumb}" Margin="0,1,0,1" Width="250" Padding="0,0,0,0">                            
                    </Thumb>
                </Track.Thumb>
                <Track.IncreaseRepeatButton> 
                    <RepeatButton  Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageRightCommand" Width="100" />
                </Track.IncreaseRepeatButton>                    
            </Track>
            <RepeatButton Grid.Column="3" Style="{StaticResource ScrollBarLineButton}" Width="18" Command="ScrollBar.LineRightCommand" Content="M 0 0 L 4 4 L 0 8 Z"/>
        </Grid>
    </ControlTemplate>

    <Style x:Key="ArfleBar" TargetType="{x:Type ScrollBar}">
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Style.Triggers>
            <Trigger Property="Orientation" Value="Horizontal">
                <Setter Property="Width" Value="Auto"/>
                <Setter Property="Height" Value="18" />
                <Setter Property="Template" Value="{StaticResource ArfleHBar}" />
            </Trigger>                
        </Style.Triggers>
    </Style>

1 Ответ

3 голосов
/ 29 марта 2010

Я не знаю, является ли это ответом, который вы ищете, поскольку я никогда не пытался обработать полосу прокрутки, но вы можете изменить ширину / высоту панели, изменив некоторые системные свойства:

<ScrollViewer>
    <ScrollViewer.Resources>
        <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">17</sys:Double>
        <sys:Double x:Key="{x:Static SystemParameters.HorizontalScrollBarHeightKey}">17</sys:Double>
    </ScrollViewer.Resources>

    ...

</ScrollViewer>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...