2010-11-09 8 views
9

मैं यह समझने की कोशिश कर रहा हूं कि कुछ ऐसा कैसे करना चाहिए (होना चाहिए) काफी सरल होना चाहिए।डब्ल्यूपीएफ लिस्टबॉक्स ऑनस्क्रॉल इवेंट

जो भी मैं चाहता हूं वह किसी भी सूची को किसी भी समय फ़ायरबॉक्स नियंत्रण स्क्रॉल करने के लिए आग लगाना है। ListBox गतिशील रूप से बनाया गया है, इसलिए मुझे इसे पीछे कोड से करने का एक तरीका चाहिए (हालांकि XAML समाधान की भी सराहना की जाती है, क्योंकि यह मुझे कुछ शुरू करने के लिए देता है)।

किसी भी विचार के लिए अग्रिम धन्यवाद।

उत्तर

11

XAML में आप ScrollViewer पहुँच सकते हैं और इस तरह

<ListBox Name="listBox" 
     ScrollViewer.ScrollChanged="listBox_ScrollChanged" 

अद्यतन
घटनाएँ जोड़ सकते हैं यह शायद क्या तुम्हारे पीछे

List<ScrollBar> scrollBarList = GetVisualChildCollection<ScrollBar>(listBox); 
foreach (ScrollBar scrollBar in scrollBarList) 
{ 
    if (scrollBar.Orientation == Orientation.Horizontal) 
    { 
     scrollBar.ValueChanged += new RoutedPropertyChangedEventHandler<double>(listBox_HorizontalScrollBar_ValueChanged); 
    } 
    else 
    { 
     scrollBar.ValueChanged += new RoutedPropertyChangedEventHandler<double>(listBox_VerticalScrollBar_ValueChanged); 
    } 
} 

संहिता में जरूरत GetVisualChildCollection

के एक कार्यान्वयन के साथ है
public static List<T> GetVisualChildCollection<T>(object parent) where T : Visual 
{ 
    List<T> visualCollection = new List<T>(); 
    GetVisualChildCollection(parent as DependencyObject, visualCollection); 
    return visualCollection; 
} 
private static void GetVisualChildCollection<T>(DependencyObject parent, List<T> visualCollection) where T : Visual 
{ 
    int count = VisualTreeHelper.GetChildrenCount(parent); 
    for (int i = 0; i < count; i++) 
    { 
     DependencyObject child = VisualTreeHelper.GetChild(parent, i); 
     if (child is T) 
     { 
      visualCollection.Add(child as T); 
     } 
     else if (child != null) 
     { 
      GetVisualChildCollection(child, visualCollection); 
     } 
    } 
} 
+0

बहुत अच्छा जवाब। मेरे पास यह देखने के लिए समय नहीं है कि यह सब ठीक से करता है, लेकिन यह निश्चित रूप से सही लगता है। आपके सहयोग के लिए धन्यवाद। – riwalk