2013-09-24 10 views
5

मैं इस ScrollViewer, जो मैं programically के तत्वों को जोड़ने के लिए है:ScrollViewer.ChangeView रिटर्न झूठी

<ScrollViewer VerticalSnapPointsAlignment="Near" 
          VerticalSnapPointsType="Mandatory" 
          VerticalScrollMode="Enabled" 
          VerticalScrollBarVisibility="Hidden" 
          ZoomMode="Disabled" 
          Width="400" 
          Height="400" 
          x:Name="MainFeatureScrollViewer" 
          ViewChanging="ScrollViewer_ViewChanging"> 
       <StackPanel x:Name="MainFeatureStackPanel" /> 
      </ScrollViewer> 

जब मैं ChangeView फोन नीचे की तरह यह गलत रिटर्न और कुछ नहीं होता। यह क्यों काम नहीं करेगा?

bool result = this.MainFeatureScrollViewer.ChangeView(null, 400, null, true); 
+0

वही है। अभी के लिए मैं ScrollToVerticalOffset का उपयोग कर रहा हूं, भले ही इसे बहिष्कृत किया गया हो। – Tristan

+0

मुझे ScrottToHorizontalOffset के साथ एक ही समस्या है। चेंज व्यू (0, नल, नल) में बदलना क्योंकि कंपाइलर चेतावनियां इसे तोड़ने की सलाह देती हैं - कोई स्क्रोलिंग नहीं होती है। – dex3703

उत्तर

0

मुझे विश्वास है कि यह आपकी कुछ संपत्ति सेटिंग्स का कारक हो सकता है। अपने स्क्रॉल व्यूअर को न्यूनतम पर स्ट्रिप करने का प्रयास करें और अपना ऑफसेट भी बदलें। आप इसे 400 तक स्क्रॉल करने के लिए कह रहे हैं जब आपकी ऊंचाई 400 है, इसलिए यह एक कारक हो सकता है कि आप जहां चाहें स्क्रॉल करने में सक्षम न हों (यह देखने के लिए इसे (शून्य, 200, शून्य, शून्य) पर सेट करने का प्रयास करें।

<ScrollViewer VerticalSnapPointsAlignment="Near" 
          VerticalScrollBarVisibility="Hidden" 
          ZoomMode="Disabled" 
          Width="400" 
          Height="400" 
          x:Name="MainFeatureScrollViewer" 
          ViewChanging="ScrollViewer_ViewChanging"> 
       <StackPanel x:Name="MainFeatureStackPanel" /> 
</ScrollViewer> 

bool result = this.MainFeatureScrollViewer.ChangeView(null, 200, null, true); 
1

बस एक ही समस्या थी - आधार समस्या यहीं पर मेरी कोड एक ही चक्र में दो बार ChangeView() फोन था - एक बार एक गैर जीयूआई धागा (जो true लौटे पर, लेकिन निश्चित रूप से वास्तव में करने के लिए स्क्रॉल नहीं था वांछित स्थिति क्योंकि यह जीयूआई थ्रेड पर नहीं थी), और बाद में जीयूआई थ्रेड पर एक प्रेषक विधि में (जो false लौटा, क्योंकि स्क्रॉलवियर ने स्पष्ट रूप से देखा कि यह पहले से ही एक नई स्क्रॉल स्थिति प्राप्त कर चुकी है जिसे वह अभी तक नहीं दिखा रहा था)।

एक बार मैंने ChangeView() कॉल को हटा दिया जो जीयूआई थ्रेड पर नहीं किए गए थे, यह ठीक काम करता था। ScrollViewer के प्रलेखन में यह मदद मिलेगी कि किस मामले में यह false लौटाएगा, हालांकि ...

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