2010-08-17 22 views
12

से ScrollViewer निकालें, मैं सोच रहा था कि TreeView के स्क्रॉलव्यूअर को आसानी से बंद करना संभव है या नहीं।WPF TreeView

मेरे पास ग्रिड के साथ उपयोगकर्ता नियंत्रण है। कोशिकाओं में से एक में स्टैकपैन के अंदर कुछ वृक्ष दृश्य हैं। ट्री व्यू की ऊंचाई के आधार पर स्वचालित रूप से नियंत्रण आकार की ऊंचाई, इसलिए स्क्रॉलबार की कोई आवश्यकता नहीं है।

समस्या यह है: मेरे पास स्क्रॉलव्यूअर के साथ लिस्टबॉक्स में इनमें से एक समूह है, लेकिन जब मैं माउसहेल का उपयोग कर रहा हूं, तो जब आप TreeView पर होते हैं तो स्क्रॉलिंग बंद हो जाती है।

ऐसा इसलिए है क्योंकि ट्री व्यू का अपना स्क्रॉल व्यूअर है जो माउसहेल चुराता है। मुझे पता है कि यह संभवतः नियंत्रण टेम्पलेट को ओवरराइड करके संभव है, लेकिन मुझे उम्मीद है कि एक आसान तरीका है।

उत्तर

30

आप यहां वर्णित तकनीक का उपयोग कर सकते हैं: http://serialseb.blogspot.com/2007/09/wpf-tips-6-preventing-scrollviewer-from.html माउस व्हील घटनाओं को स्क्रॉलव्यूयर द्वारा संभालने से रोकने के लिए। PreviewMouseWheel="HandlePreviewMouseWheel" अपने TreeView में जोड़े और के रूप में HandlePreviewMouseWheel को परिभाषित:

private void HandlePreviewMouseWheel(object sender, MouseWheelEventArgs e) 
{ 
    if (!e.Handled) 
    { 
     e.Handled = true; 
     var eventArg = new MouseWheelEventArgs(
      e.MouseDevice, e.Timestamp, e.Delta); 
     eventArg.RoutedEvent = UIElement.MouseWheelEvent; 
     eventArg.Source = sender; 
     var parent = ((Control)sender).Parent as UIElement; 
     parent.RaiseEvent(eventArg); 
    } 
} 

नियंत्रण टेम्पलेट बदलने को शामिल नहीं करने के लिए एक ScrollViewer कि कठिन है, हालांकि, नहीं है, क्योंकि TreeView के लिए डिफ़ॉल्ट टेम्पलेट बहुत आसान है, और जटिलता के सबसे अधिक है स्क्रॉलव्यूयर को संभालना। ऐसा करने का प्रयास करें:

<TreeView.Template> 
    <ControlTemplate TargetType="TreeView"> 
     <Border BorderBrush="{TemplateBinding BorderBrush}" 
       BorderThickness="{TemplateBinding BorderThickness}" 
       SnapsToDevicePixels="true"> 
      <ItemsPresenter/> 
     </Border> 
    </ControlTemplate> 
</TreeView.Template> 
+0

हम्म, ऐसा लगता है कि मेरी आखिरी टिप्पणी काम नहीं करती है। वैसे भी, धन्यवाद! मैंने दोनों की कोशिश की। एक्सएमएल कंट्रोल टेम्पलेट पूरी तरह से काम करता है, लेकिन स्क्रॉलिंग के दौरान पूर्वावलोकनमोउसहेल को अभी भी कुछ बार अटक गया है। मैं एक्सएमएल समाधान के साथ जाऊंगा। XAML समाधान के लिए – user380527

+6

+1 (एक ही समस्या के साथ भी सही काम किया) – JanW

संबंधित मुद्दे