适用于Windows 8 App的样式Scrollviewer(颜色,高度等)

时间:2014-01-03 16:17:00

标签: windows xaml winrt-xaml windows-applications

我有一个Windows 8应用程序,它在水平滚动查看器中显示堆栈面板。我创建了一个应用于滚动查看器的样式,我想要定位滚动条高度,前景和背景栏颜色,箭头等。但我似乎无法访问这些属性。任何信息都将不胜感激。

<Style x:Key="HorizontalScrollViewerStyle" TargetType="ScrollViewer">
    <Setter Property="HorizontalScrollBarVisibility" Value="Auto"/>
    <Setter Property="VerticalScrollBarVisibility" Value="Disabled"/>
    <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Enabled" />
    <Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled" />
    <Setter Property="ScrollViewer.ZoomMode" Value="Disabled" />
</Style>

2 个答案:

答案 0 :(得分:0)

您可以根据此处的默认样式创建自己的滚动条样式:

http://msdn.microsoft.com/library/windows/apps/jj710190.aspx

答案 1 :(得分:0)

试试这个模板

<Style  TargetType="ScrollBar">
        <Setter Property="MinWidth" Value="17" />
        <Setter Property="MinHeight" Value="17" />                      
        <Setter Property="IsTabStop" Value="False" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ScrollBar">
                    <Grid x:Name="Root">
                        <Grid.Resources>

                            <!--************************RepeatButton***********************************************-->
                            <ControlTemplate x:Key="RepeatButtonTemplate" TargetType="RepeatButton">
                                <Border x:Name="Root" Background="Transparent"></Border>                                                                            
                            </ControlTemplate>
                            <!--*************************************************************************************-->



                            <!--************************Increment and decrement  RepeatButton***********************************************-->                                
                            <!-- Visit Charmap for different arrow shapes-->                                
                            <ControlTemplate x:Key="HorizontalIncrementTemplate" TargetType="RepeatButton">
                                <Grid x:Name="Root" Height="9" Width="9">                                      
                                        <TextBlock x:Name="BackgroundPressed" FontFamily="Segoe UI Symbol" Foreground="DarkGray" Text="&#x25B6;" FontSize="8" Opacity="1" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>                                        
                                </Grid>
                            </ControlTemplate>  

                            <ControlTemplate x:Key="HorizontalDecrementTemplate" TargetType="RepeatButton">
                                <Grid x:Name="Root" Height="9" Width="9">                                     
                                        <TextBlock x:Name="BackgroundPointerOver" FontFamily="Segoe UI Symbol" Foreground="Gray" Text="&#x25C0;" FontSize="8" Opacity="1" HorizontalAlignment="Center"  VerticalAlignment="Center"></TextBlock>                                     
                                </Grid>
                            </ControlTemplate>                                                                                               
                            <!--******************************************************************************-->




                            <!--************************thumb************************************************************-->                              
                            <ControlTemplate x:Key="HorizontalThumbTemplate" TargetType="Thumb">                                                                                                                  
                                        <Border x:Name="Background" Background="LightGray"  BorderBrush="DarkGray" BorderThickness="1" />                                                                                                                 
                            </ControlTemplate>
                            <!--*********************************************************************************************-->
                        </Grid.Resources>



                        <!--here u can define height and width for scrollbar-->
                        <Grid x:Name="HorizontalRoot" IsHitTestVisible="False" Height="17" Margin="0,-3,0,0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <Rectangle Grid.ColumnSpan="5" Margin="0" StrokeThickness="0.5" Fill="White" Stroke="DarkGray" />
                            <RepeatButton x:Name="HorizontalSmallDecrease" Width="15" Grid.Column="0"  IsTabStop="False" Interval="50"  Template="{StaticResource HorizontalDecrementTemplate}"  VerticalAlignment="Center" />
                            <RepeatButton x:Name="HorizontalLargeDecrease" Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" IsTabStop="False" Interval="50" Template="{StaticResource RepeatButtonTemplate}" Width="0" />
                            <Thumb x:Name="HorizontalThumb" Grid.Column="2" MinWidth="48" Height="15"  Template="{StaticResource HorizontalThumbTemplate}"   Margin="2" />
                            <RepeatButton x:Name="HorizontalLargeIncrease" Grid.Column="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" IsTabStop="False" Interval="50" Template="{StaticResource RepeatButtonTemplate}"  />
                            <RepeatButton x:Name="HorizontalSmallIncrease" Width="15" Grid.Column="4"  IsTabStop="False" Interval="50"  Template="{StaticResource HorizontalIncrementTemplate}"  VerticalAlignment="Center" />
                        </Grid>
                        <Grid x:Name="HorizontalPanningRoot" HorizontalAlignment="Left" MinWidth="66">
                            <Border x:Name="HorizontalPanningThumb" Background="Transparent"  MinWidth="15" />
                        </Grid>




                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal" />
                                <VisualState x:Name="PointerOver" />                                 
                            </VisualStateGroup>                                
                            <VisualStateGroup x:Name="ScrollingIndicatorStates">
                                <VisualState x:Name="TouchIndicator">
                                    <Storyboard>
                                        <FadeInThemeAnimation TargetName="HorizontalPanningRoot" />                                            
                                        <FadeOutThemeAnimation TargetName="HorizontalRoot" />                                          
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HorizontalRoot" Storyboard.TargetProperty="Visibility" Duration="0">
                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <Visibility>Collapsed</Visibility>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="MouseIndicator">
                                    <Storyboard>
                                        <FadeInThemeAnimation TargetName="HorizontalRoot" />                                           
                                        <FadeOutThemeAnimation TargetName="HorizontalPanningRoot" />
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HorizontalPanningRoot" Storyboard.TargetProperty="Visibility" Duration="0">
                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <Visibility>Collapsed</Visibility>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>                                      
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="HorizontalRoot">
                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <x:Boolean>True</x:Boolean>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="NoIndicator">
                                    <Storyboard>
                                        <FadeOutThemeAnimation BeginTime="0" TargetName="HorizontalPanningRoot" />
                                        <FadeOutThemeAnimation BeginTime="0" TargetName="HorizontalRoot" />
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>                                                                                 
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

你可以像这样定义拇指和重复按钮的按下,指针移动行为

<ControlTemplate x:Key="HorizontalIncrementTemplate" TargetType="RepeatButton">
                                <Grid x:Name="Root" Height="9" Width="9">
                                    <VisualStateManager.VisualStateGroups>
                                        <VisualStateGroup x:Name="CommonStates">
                                            <VisualState x:Name="Normal" />
                                            <VisualState x:Name="PointerOver">
                                                <Storyboard>
                                                    <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundPointerOver" />
                                                </Storyboard>
                                            </VisualState>
                                            <VisualState x:Name="Pressed">
                                                <Storyboard>
                                                    <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundPressed" />
                                                </Storyboard>
                                            </VisualState>
                                            <VisualState x:Name="Disabled" />
                                        </VisualStateGroup>
                                    </VisualStateManager.VisualStateGroups>
                                    <Grid HorizontalAlignment="Right" VerticalAlignment="Center">
                                        <TextBlock x:Name="BackgroundPointerOver" FontFamily="Segoe UI Symbol" Foreground="Gray" Text="&#x25B6;" FontSize="8" Opacity="0" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
                                        <TextBlock x:Name="BackgroundPressed" FontFamily="Segoe UI Symbol" Foreground="DarkGray" Text="&#x25B6;" FontSize="8" Opacity="0" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
                                    </Grid>
                                </Grid>
                            </ControlTemplate>