2011-09-23 72 views
1

在Silverlight 4中,是否有一種方法,無論何時向下翻頁ScrollViewer(即單擊與拇指相鄰的區域中的滾動條)在頂部是完全可見的。當拖動拇指或使用鼠標滾輪時,我仍然需要它來平滑滾動。有沒有辦法確保Silverlight ScrollViewer保持頂部項目完全可見

我的客戶不喜歡這樣的情況,當他向列表下拉列表時,因爲它在頂部和底部切成兩半,所以它不會被減半。我提出了某種整體滾動,他不喜歡它。他希望它能夠平滑滾動,除非上下翻頁。

編輯

這裏的漁獲物。這些項目的大小不一樣。所以我必須檢測位於滾動查看器頂部的項目並將其滾動到視圖中。是否有捷徑可尋?

回答

1

您需要做的第一件事就是從ScrollViewer的內部挖出垂直滾動條。你可以在VisualTreeHelper的幫助下做到這一點。在各種博客中有很多小代碼可以讓它更容易使用。我建議這VisualTreeEnumeration(但我不會我)。有了這一擴展類你可以用垂直滾動條:

ScrolBar vertSB = someScrollViewer.Descendents() 
            .OfType<ScrollBar>() 
            .FirstOrDefault(sb => sb.Name = "VerticalScrollBar"); 

現在,您可以連接到的滾動事件,並確定發生這樣的滾動類型:

vertSB.Scroll += (s, args) => 
{ 
    if (args.ScrollEventType == ScrollEventType.LargeDecrement 
     || args.ScrollEventType == ScrollEventType.LargeIncrement) 
    { 
      // using args.NewValue determine the correct Integral value and assign 
      // using someScrollViewer.ScrollToVerticalOffset 
    } 
}; 
+0

這裏的漁獲。這些項目的大小不一樣。所以我必須檢測位於滾動查看器頂部的項目並將其滾動到視圖中。 – Jordan

相關問題