2013-08-24 125 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