2014-01-29 4 views
1

У меня есть этот ScrollViewer, на Windows Phone 8 проектаScrollViewer щелкать

<ScrollViewer Name="MediaScroll" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto" Background="#7FD13E3E" Tap="ScrollViewer_Tap" VerticalAlignment="Top" LayoutUpdated="MediaScroll_LayoutUpdated"> 
      <ItemsControl ItemTemplate="{StaticResource ItemTemplate2}" ItemsPanel="{StaticResource ItemsPanelTemplate1}" ItemsSource="{Binding listaMedia}"> 

      </ItemsControl> 
     </ScrollViewer> 

, который использует эти шаблоны

<phone:PhoneApplicationPage.Resources> 

    <ItemsPanelTemplate x:Key="ItemsPanelTemplate1"> 
     <StackPanel Orientation="Horizontal" Margin="0,0,0,0"/> 
    </ItemsPanelTemplate> 

    <DataTemplate x:Key="ItemTemplate2"> 

     <StackPanel Width="480"> 
      <Image Source="/Assets/[email protected]" Width="75" Canvas.ZIndex="10" Margin="203,85,202,0" /> 
      <Image Source="{Binding snapshot.path}" Stretch="Fill" VerticalAlignment="Top" Margin="0,-160,0,0" /> 
     </StackPanel> 
     <!--<Image Tag="{Binding id}" Source="{Binding snapshot.path}" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="-10,0,-9,0" Tap="Image_Tap" />--> 
     <!--Your other code--> 
    </DataTemplate> 

</phone:PhoneApplicationPage.Resources> 

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

Не уверен, могу ли я сделать это с помощью события LayoutUpdated.

ответ

1

Для этого не следует использовать ScrollViwer. Если вам нужна специальная прокрутка, вы можете написать элемент управления самостоятельно или вы можете повторно использовать Pivot, если количество изображений невелико.

Итак, вам нужно создать свой собственный пользовательский контроль и переопределить события Manipulation *. Когда пользователь перетаскивает изображение, вы можете обновить его перевод с помощью RenderTransform. Вы можете обнаружить, когда пользователь отпускает перетаскивание, прошел ли изображение мимо его середины. В этом случае вы вручную подгоняете следующее изображение на своем месте.

Для этого вам нужен пользовательский код загрузки изображения, пользовательские анимации, созданные главным образом в коде. Не забудьте отменить существующие анимации, если пользователь снова начнет перетаскивать в середине анимации.

Извиняюсь за недостаток кода, но либо отправлю здесь все решение (что может занять несколько часов), либо я мог бы дать указания относительно деталей решения.

+0

Количество изображений, может варьироваться, поэтому я не знаю, сколько у него будет. плохо исследовать опцию пользовательского прокрутки – Ric

+0

, если у вас есть место, где я мог бы получить дополнительную информацию об этом, я бы оценил :) – Ric

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