2014-12-09 3 views
2

Я создаю пользовательский элемент управления для Windows Phone 8.1. Но стековая панель не прокручивается. StackPanel содержит один ListView, который заставляет TextBlock & другой StackPanel, в котором находится кнопка Toggle.StackPanel не прокручивается в Windows Phone 8.1

<StackPanel Orientation="Vertical" > 
     <ListView Grid.Row="0" Background="RoyalBlue"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <TextBlock Text="Some Text" Foreground="Black" FontSize="20" TextAlignment="Center" ></TextBlock> 
        </Grid>      
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
     <StackPanel Grid.Row="2" HorizontalAlignment="Stretch" Background="Red" Orientation="Horizontal"> 
      <Grid HorizontalAlignment="Stretch"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"></ColumnDefinition> 
       </Grid.ColumnDefinitions> 
       <ToggleButton Grid.Column="0" Content="Toggle Me" /> 
      </Grid> 
     </StackPanel> 
</StackPanel> 
+2

StackPanel не прокрутки - вы должны использовать ScrollViewer. Также вам может потребоваться определить высоту ListView. – Romasz

ответ

5

Stackpanel не обеспечивает прокрутку. Вы можете обернуть его в ScrollViewer.

Также: listView уже предоставляет прокрутку.

Но: Панель содержимого ListView внутри будет собирать все ваши события манипуляции. Кроме того, ListView внутри Stackpanel будет иметь бесконечный захват и, следовательно, потерять возможности виртуализации.

Если вы просто хотите иметь контент выше и/или ниже ListView, возможно, используйте его свойства заголовка/нижнего колонтитула.

1

Добавить ScrollViewer поверх StackPanel, и это сделает его прокручиваемым.

Для примера:

<ScrollViewer Margin="12"> 
    <StackPanel> 
     <TextBlock Text="content1" FontSize="48" /> 
     <TextBlock Text="content1" FontSize="48" /> 
    </StackPanel> 
</ScrollViewer> 
Смежные вопросы