हां, आपको ListView से स्क्रॉलवियर को पकड़ना होगा, या एक बार जब आप उस तक पहुंच प्राप्त कर लेंगे, तो आप इसके द्वारा प्रकट किए गए तरीकों का उपयोग कर सकते हैं या स्क्रॉलिंग को ओवरराइड कर सकते हैं। आप मुख्य सामग्री क्षेत्र प्राप्त करके और IScrollInfo इंटरफ़ेस के कार्यान्वयन का उपयोग करके भी स्क्रॉल कर सकते हैं।
यहाँ एक ListBox, ListView की तरह कुछ की ScrollViwer घटक प्राप्त करने के लिए एक छोटे से सहायक, आदि
public static DependencyObject GetScrollViewer(DependencyObject o)
{
// Return the DependencyObject if it is a ScrollViewer
if (o is ScrollViewer)
{ return o; }
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(o); i++)
{
var child = VisualTreeHelper.GetChild(o, i);
var result = GetScrollViewer(child);
if (result == null)
{
continue;
}
else
{
return result;
}
}
return null;
}
है और फिर आप बस का उपयोग कर सकते .LineUp() और .LineDown() इस तरह:
private void OnScrollUp(object sender, RoutedEventArgs e)
{
var scrollViwer = GetScrollViewer(uiListView) as ScrollViewer;
if (scrollViwer != null)
{
// Logical Scrolling by Item
// scrollViwer.LineUp();
// Physical Scrolling by Offset
scrollViwer.ScrollToVerticalOffset(scrollViwer.VerticalOffset + 3);
}
}
private void OnScrollDown(object sender, RoutedEventArgs e)
{
var scrollViwer = GetScrollViewer(uiListView) as ScrollViewer;
if (scrollViwer != null)
{
// Logical Scrolling by Item
// scrollViwer.LineDown();
// Physical Scrolling by Offset
scrollViwer.ScrollToVerticalOffset(scrollViwer.VerticalOffset + 3);
}
}
<DockPanel>
<Button DockPanel.Dock="Top"
Content="Scroll Up"
Click="OnScrollUp" />
<Button DockPanel.Dock="Bottom"
Content="Scroll Down"
Click="OnScrollDown" />
<ListView x:Name="uiListView">
<!-- Content -->
</ListView>
</DockPanel>
लाइनअप और लाइनडाउन द्वारा खुलासा गया लॉजिकल स्क्रॉलिंग अभी भी आइटम द्वारा स्क्रॉल करता है, यदि आप एक सेट राशि से स्क्रॉल करना चाहते हैं तो आपको ऊपर स्क्रॉलटॉरिज़िंटल/वर्टिकल ऑफसेट का उपयोग करना चाहिए। यदि आप कुछ और जटिल स्क्रॉलिंग भी चाहते हैं, तो मैंने इस other question में दिए गए उत्तर को देखें।
वर्टिकल स्क्रॉल डाउन और अप दोनों के लिए, आप 'वर्टिकल ऑफसेट' में 3 जोड़ रहे हैं। क्या यह सही है? इसके लिए, हमें जोड़ने के बजाय, 3 घटाएं। – Syed