2012-08-17 18 views
5

मैं वर्तमान में विंडोज 8 एक्सएएमएल सी # एप्लिकेशन का निर्माण कर रहा हूं। एक पृष्ठ में मेरे पास क्षैतिज स्वाइपिंग और स्क्रॉलिंग के लिए स्क्रॉलव्यूअर है। मेरे पास कई नियंत्रण हैं जो स्कोलव्यूवर के साथ वास्तव में अच्छी तरह से काम करते हैं। लेकिन जब आप स्क्रॉल करते हैं और आपका कर्सर ListView/GridView के शीर्ष पर है, तो वह नियंत्रण scrollviewer के बजाय scrollnig को संभालेगा। इसे स्वाइप करने के साथ ऐसा नहीं होता है, लेकिन माउस स्क्रोलव्हील के साथ यह स्क्रॉलव्यूइंग स्क्रॉल को रोक देता है। क्या कोई इस बात को जानता है कि इस व्यवहार को कैसे अक्षम किया जाए या कोई कामकाज हो?स्क्रॉलव्यूयर ग्रिड व्यू एक्सएएमएल

उत्तर

0

यह एक समस्या है जिसे मैं भी देखता हूं। यह स्पर्श में मौजूद नहीं है - केवल तब होता है जब माउस व्हील का उपयोग किया जाता है। मैं अभी तक एक कामकाज के बारे में नहीं जानता। मुझे नहीं लगता कि एक है।

1

थोड़ी देर के लिए इस समस्या के साथ काम करने के बाद मैंने रणनीति बदलने का फैसला किया। कम से कम मेरे समाधान में मैंने आंतरिक ग्रिड व्यू को केवल आइटम नियंत्रण बदलने के लिए बदल दिया। इस तरह से मैं सभी क्लिक/टैप को संभाल सकता हूं लेकिन फिर भी उम्मीद के अनुसार स्क्रॉल काम करने देता हूं।

बेशक यह समाधान सभी के लिए नहीं है क्योंकि कभी-कभी आपको सभी चयन सामग्री की भी आवश्यकता होती है। लेकिन मेरे लिए यह काम करता है क्योंकि मुझे केवल आइटम क्लिक/टैप की आवश्यकता होती है।

यह मदद करता है

0

मैं एक समाधान के यहां पाया आशा:

बेस XAML:

<Grid Name="BaseElement"> 
     <ScrollViewer Name="MainScrollViewer" Style="{StaticResource HorizontalScrollViewerStyle}" VerticalScrollMode="Auto"> 
      <GridView /> 
      <GridView /> 
     </ScrollViewer> 
    </Grid> 
  1. एक नया जोड़े msdn workaround

    मूल रूप से आप निम्नलिखित क्या करना है रूट तत्व के हैंडलर:

    BaseElement.AddHandler(PointerWheelChangedEvent, new PointerEventHandler(Bubble_PointerWheelChanged), true); 
    
  2. स्क्रॉल handel करने के लिए हैंडलर को लागू करें:

    private void Bubble_PointerWheelChanged(object sender, PointerRoutedEventArgs e) 
    { 
        // Could walk up the tree to find the next SV or just have a reference like here: 
        MainScrollViewer.ScrollToHorizontalOffset(MainScrollViewer.HorizontalOffset - e.GetCurrentPoint(null).Properties.MouseWheelDelta); 
    } 
    
0

मैं भी यही समस्या थी। तब मैं धागा नीचे में उल्लिखित ग्रिड टेम्पलेट से स्क्रॉल सलाखों को दूर करने की कोशिश की .. यह मेरे लिए ठीक काम किया ..

https://stackoverflow.com/a/10305608/2444509

+0

में लिंक को संक्षेप में प्रस्तुत करें आपका उत्तर। – michaelb958

0

बेस्ट समाधान कभी।

public class CustomGridView : GridView 
{ 
    protected override void OnApplyTemplate() 
    { 
     base.OnApplyTemplate(); 
     var sv = this.GetTemplateChild("ScrollViewer") as UIElement; 
     if (sv != null) 
      sv.AddHandler(UIElement.PointerWheelChangedEvent, new PointerEventHandler(OnPointerWheelChanged), true); 
    } 

    private void OnPointerWheelChanged(object sender, PointerRoutedEventArgs e) 
    { 
     e.Handled = false; 
    } 
} 

और जानकारी: GridView in a ScrollViewer

0

1.Add View.cs में इस कोड: Xaml में

private void ThumbnailViewer_OnMouseWheel(object sender, MouseWheelEventArgs e) 
    { 
     ThumbnailViewerScroller.ScrollToHorizontalOffset(ThumbnailViewerScroller.HorizontalOffset - e.Delta); 
    } 

2.add कोड:

<ScrollViewer 
      x:Name="ViewerScroller"    
      MouseWheel="ThumbnailViewer_OnMouseWheel"> 
<StackPanel> 
... 
</StackPanel> 
</ScrollViewer> 
संबंधित मुद्दे