2013-03-01 89 views
0

我的Windows Phone页面上有一个ScrollViewer。 我想显示有一个滚动的可能性expllicitly。默认情况下,控件本身不显示任何可以向用户提示该空间是可滚动的提示。 例如,是否有可能总是在右侧显示滚动条?同样,默认情况下,仅当用户想要并尝试滚动时才显示它。ScrollViewer边框(Windows Phone 7)

回答

1

<ScrollViewer VerticalScrollBarVisibility="Visible">不能在windows phone中工作。我认为你可以更改ScrollViewer的ControTemplate并使滚动条可见。

编辑:

是您如何更改ScrolViewer控制模板的示例。我是从MSDN

<Style x:Key="LeftScrollViewer" TargetType="ScrollViewer"> 

     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ScrollViewer"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition/> 
          <RowDefinition Height="Auto"/> 
         </Grid.RowDefinitions> 

         <ScrollContentPresenter Grid.Column="1"/> 

         <ScrollBar Name="PART_VerticalScrollBar" 
     Value="{TemplateBinding VerticalOffset}" 
     Maximum="{TemplateBinding ScrollableHeight}" 
     ViewportSize="{TemplateBinding ViewportHeight}" 
     Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/> 
         <ScrollBar Name="PART_HorizontalScrollBar" 
     Orientation="Horizontal" 
     Grid.Row="1" 
     Grid.Column="1" 
     Value="{TemplateBinding HorizontalOffset}" 
     Maximum="{TemplateBinding ScrollableWidth}" 
     ViewportSize="{TemplateBinding ViewportWidth}" 
     Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/> 

        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

将此风格ScrolViewer

<ScrollViewer Grid.Column="1" Style="{StaticResource LeftScrollViewer}"> 

这个样本不会在Windows Phone的,因为这的ScrollViewer控件模板从descktop WPF工作。但是你可以使用Expression Blend和获得的Windows Phone ScrolViewer的ControlTemplate和Visibility="Visible"

1

改变类似

Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/> 

你可以用一个始终显示滚动条替换默认的ScrollViewer模板。请注意,这与windows手机设计指南不一致,您应该在选择始终显示滚动条之前仔细思考。

<phone:PhoneApplicationPage.Resources> 
    <Style x:Key="ScrollViewerStyle1" TargetType="ScrollViewer"> 
     <Setter Property="VerticalScrollBarVisibility" Value="Auto"/> 
     <Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="Padding" Value="0"/> 
     <Setter Property="BorderThickness" Value="0"/> 
     <Setter Property="BorderBrush" Value="Transparent"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ScrollViewer"> 
        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="ScrollStates"> 
           <VisualStateGroup.Transitions> 
            <VisualTransition GeneratedDuration="00:00:00.5"/> 
           </VisualStateGroup.Transitions> 
           <VisualState x:Name="Scrolling"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="VerticalScrollBar"/> 
             <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HorizontalScrollBar"/> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="NotScrolling"/> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <Grid Margin="{TemplateBinding Padding}"> 
          <ScrollContentPresenter x:Name="ScrollContentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}"/> 
          <ScrollBar x:Name="VerticalScrollBar" HorizontalAlignment="Right" Height="Auto" IsHitTestVisible="False" IsTabStop="False" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Opacity="1" Orientation="Vertical" Visibility="Visible" Value="{TemplateBinding VerticalOffset}" ViewportSize="{TemplateBinding ViewportHeight}" VerticalAlignment="Stretch" Width="5"/> 
          <ScrollBar x:Name="HorizontalScrollBar" HorizontalAlignment="Stretch" Height="5" IsHitTestVisible="False" IsTabStop="False" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Opacity="0" Orientation="Horizontal" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{TemplateBinding HorizontalOffset}" ViewportSize="{TemplateBinding ViewportWidth}" VerticalAlignment="Bottom" Width="Auto"/> 
         </Grid> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</phone:PhoneApplicationPage.Resources> 

<ScrollViewer Style="{StaticResource ScrollViewerStyle1}">