2011-03-10 27 views
5

Soru olayı kaydırma alın: alın Windows Phone ScrollViewer için olayı kaydırmaWindows Phone ScrollViewer için

Bir ScrollViewer şöyle var:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
    <ScrollViewer x:Name="MyScroller"> 
     <StackPanel> 
      <!-- ... --> 
     </StackPanel> 
    </ScrollViewer> 
</Grid> 

Ben kaydırma için ortaya çıktığında uygun etkinliği ihtiyaç MyScroller: ScrollViewer kaydırılan

// MyScroller.Scroll += // <-- "Scroll" event does not exist on ScrollViewer 
MyScroller.MouseWheel += MyScroller_MouseWheel; // Does not fire on scroll 
MyScroller.ManipulationDelta += MyScroller_ManipulationDelta; // Fires for pinch-zoom only 

cevap

1

Bu kadar basit değil, ama bu soruya yazılmış birkaç kaydırma algılama mekanizmaları vardır:

WP7 Auto Grow ListBox upon reaching the last item

Temelde denilen ve kullanılan OnListVerticalOffsetChanged şekilde bakabilirsiniz.

+0

Teşekkürler, bu ihtiyacım olan şey için çok daha ileri gider. Listbox olmadan çalışır umuyoruz, ancak, görüntülerle Listbox'ları ve özel düzenim – Subcreation

+0

'u kullanarak mükemmel sorunlar yaşadım. ListBox - ega ScrollViewer ve bir StackPanel ile ItemsControl dışında bir şey kullanıyorsanız, o zaman ne kadar dikkatli olun uygulamanızın UI oluşturmak için kullandığı bellek - aşırı bellek kullanımını önlemek için VirtualisingStackPanel kullanmanız gerekebilir. – Stuart

12

MouseMove yangınları:

public MainPage() 
{ 
    InitializeComponent(); 

    MyScroller.MouseMove += MyScroller_MouseMove; 
} 

void MyScroller_MouseMove(object sender, MouseEventArgs e) 
{ 
    throw new NotImplementedException();// This will fire 
} 

Bu, "fare" olayı olarak adlandırıldığı ve telefonda hiçbir fare olmadığı için sezgisel değildir. Bununla birlikte, temas noktası ScrollViewer konteynerine göre hareket eder, kaydırma işlemini nasıl yürütebilir.

0

Mango ile, "ScrollStates" görsel durumunu bu sample project'da açıklandığı gibi değiştirmek için izleyebilirsiniz.