2011-03-10 74 views
5

問: 獲取滾動的ScrollViewer中的事件在Windows Phone獲取Windows Phone上進行的ScrollViewer滾動事件

我有一個ScrollViewer中,像這樣:

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

我需要在滾動發生針對事件MyScroller:

// 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 

回答

1

這不是那麼簡單,但有寫在這個問題幾滾動檢測機制:

WP7 Auto Grow ListBox upon reaching the last item

基本上看看OnListVerticalOffsetChanged被稱爲和使用的方式。

+0

謝謝,這對我所需要的更進一步。但是,我希望它可以在沒有Listbox的情況下工作,因爲我已經使用帶有圖像的Listbox和我的自定義佈局的性能問題 – Subcreation 2011-03-11 04:17:41

+0

如果您使用的不是ListBox - 例如ScrollViewer和帶有StackPanel的ItemsControl,請注意多少記憶您的應用程序用於呈現用戶界面 - 您可能需要使用VirtualisingStackPanel以避免過多的內存使用。 – Stuart 2011-03-11 07:32:12

12

的MouseMove火災時的ScrollViewer滾動:

public MainPage() 
{ 
    InitializeComponent(); 

    MyScroller.MouseMove += MyScroller_MouseMove; 
} 

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

這並不直觀,因爲它被命名爲「鼠標」事件,並且手機上沒有鼠標。然而,相對於ScrollViewer容器,觸點確實會移動,這就是它如何處理滾動。

0

使用芒果,您可以按照sample project中所述的方式觀察「ScrollStates」視覺狀態的變化。