2013-08-24 97 views
3

我正在使用LongListSelector,右侧的滚动条添加了一些空的空间,这是搞乱了设计,所以我想隐藏它。我试过以下内容:在LongListSelector中隐藏滚动条

ScrollBar sb = ((FrameworkElement)VisualTreeHelper.GetChild(FileList, 0)) 
          .FindName("VerticalScrollBar") as ScrollBar; 
sb.Width = 0; 

但是这不适用于wp8,我可以使宽度更大但不能更小。它具有ScrollViewer.VerticalScrollBarVisibility属性,但将其更改为隐藏或禁用不会执行任何操作。

/编辑:

这似乎工作:

var sb = ((FrameworkElement) VisualTreeHelper.GetChild(FileList, 0)) 
.FindName("VerticalScrollBar") as ScrollBar; 
sb.Margin = new Thickness(-10, 0, 0, 0); 

但是,如果任何人有一个更清洁的方法,我还是想听到它。

+0

可能重复的[WP7 - LongListSelector,如何隐藏垂直滚动条](http://stackoverflow.com/questions/16131496/wp7-longlistselector-how-to-hide-vertical-scroll-bar) – caschw

+0

@caschw这是不一样的,那就是我发现第一种方法不适用于wp8。 – Jesse

+0

在深入研究方法和控制层次之后,没有任何东西严格地“更清洁”。您可以进行的唯一更改是将滚动条宽度设置为0并将边距设置为不带参数的新厚度()。 – lsuarez

回答

6

您可以通过重新设计整个控件来解决这个问题。

添加此资源:

<Style x:Key="LongListSelectorWithNoScrollBarStyle" TargetType="phone:LongListSelector"> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="phone:LongListSelector"> 
       <Grid Background="{TemplateBinding Background}" d:DesignWidth="480" d:DesignHeight="800"> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="ScrollStates"> 
          <VisualStateGroup.Transitions> 
           <VisualTransition GeneratedDuration="00:00:00.5"/> 
          </VisualStateGroup.Transitions> 
          <VisualState x:Name="Scrolling" /> 
          <VisualState x:Name="NotScrolling"/> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <Grid Margin="{TemplateBinding Padding}"> 
         <ViewportControl x:Name="ViewportControl" HorizontalContentAlignment="Stretch" VerticalAlignment="Top"/> 
        </Grid> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

使用资源

<phone:LongListSelector Style="{StaticResource LongListSelectorWithNoScrollBarStyle}"> 
    .... 
</phone:LongListSelector> 

瞧。没有滚动条。

+0

我在xaml中需要什么导入线才能识别'd:DesignWidth'和'd:DesignHeight'? – Navigateur

+0

优秀的解决方案。 – Senkwe