2013-08-24 18 views
3

Я использую LongListSelector, а полоса прокрутки справа добавляет немного пустого пространства, которое испортило дизайн, поэтому я хочу скрыть его. Я попытался следующие:Скрыть полосу прокрутки в LongListSelector

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

Но это не работает для WP8, я могу сделать ширину больше, хотя, но не меньше. Он обладает свойством ScrollViewer.VerticalScrollBarVisibility, но изменение его на Hidden или Disabled не делает ничего.

/Edit:

Это, кажется, работает:

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 и маржу на новую толщину() без параметров для поля 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

Смежные вопросы