2016-10-19 5 views
0

Я работаю с сеткой и ScrollViewer на странице UWP, где каждая строка представляет собой полку. У меня есть N строк, но мне нужно установить пределы ScrollViewer между концом первой строки и началом последнего, потому что они находятся вне экрана (у меня есть только эти строки, поэтому, когда пользователь прокручивается до тех пор, пока пределы я не хочу, чтобы он видел фон, но пустую строку).uwp scrollViewer set limits

Есть ли способ определить верхний и нижний пределы для ScrollViewer?

Это XAML, где я определяю эти элементы:

<ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Hidden" Name="MyScrollViewer"> 
    <Grid Name="MyGrid" Tapped="HideOptionMenu"> 
     <Grid.RowDefinitions> 
     </Grid.RowDefinitions> 
    </Grid> 
</ScrollViewer> 

Строки добавляются динамически во время выполнения, поэтому количество строк не всегда одинакова. Кроме того, высота каждой строки изменяется при изменении размера экрана.

Спасибо за ваше время.

ответ

0

Я не думаю, что можно установить пределы ScrollViewer.

Один из способов, которым вы можете достичь, состоит в том, чтобы поместить строки прокрутки в первую и последнюю строки сетки и перевести их за пределы ScrollViewer, чтобы они были видны при перекрестке.

<ScrollViewer> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="100"/> 
      <RowDefinition Height="100"/> 
      <RowDefinition Height="100"/> 
      <RowDefinition Height="100"/> 
      <RowDefinition Height="100"/> 
      <RowDefinition Height="100"/> 
      <RowDefinition Height="100"/> 
      <RowDefinition Height="100"/> 
     </Grid.RowDefinitions> 

     <!-- Top overscroll row --> 
     <Rectangle Grid.Row="0" HorizontalAlignment="Stretch" Fill="Orange" Stroke="Black"> 
      <Rectangle.RenderTransform> 
       <TranslateTransform Y="-100"/> 
      </Rectangle.RenderTransform> 
     </Rectangle> 

     <!-- Bottom overscroll row --> 
     <Rectangle Grid.Row="8" HorizontalAlignment="Stretch" Fill="Orange" Stroke="Black"> 
      <Rectangle.RenderTransform> 
       <TranslateTransform Y="100"/> 
      </Rectangle.RenderTransform> 
     </Rectangle> 

     <Rectangle Grid.Row="0" HorizontalAlignment="Stretch" Fill="Red" Stroke="Black"/> 
     <Rectangle Grid.Row="1" HorizontalAlignment="Stretch" Fill="Red" Stroke="Black"/> 
     <Rectangle Grid.Row="2" HorizontalAlignment="Stretch" Fill="Red" Stroke="Black"/> 
     <Rectangle Grid.Row="3" HorizontalAlignment="Stretch" Fill="Red" Stroke="Black"/> 
     <Rectangle Grid.Row="4" HorizontalAlignment="Stretch" Fill="Red" Stroke="Black"/> 
     <Rectangle Grid.Row="5" HorizontalAlignment="Stretch" Fill="Red" Stroke="Black"/> 
     <Rectangle Grid.Row="6" HorizontalAlignment="Stretch" Fill="Red" Stroke="Black"/> 
     <Rectangle Grid.Row="7" HorizontalAlignment="Stretch" Fill="Red" Stroke="Black"/> 
     <Rectangle Grid.Row="8" HorizontalAlignment="Stretch" Fill="Red" Stroke="Black"/> 
    </Grid> 
</ScrollViewer> 

Он чувствует себя немного неуклюжим, используя сетку для того, что на самом деле представляет собой макет/ListView StackPanel, но так как я не знаю специфику о вашем пользовательском интерфейсе, я предполагаю, что у вас есть причины для этого.