मैं कभी कभी कुछ करीब 3,000 पिक्सेल चौड़ाई को यहआयताकार के अंत तक पहुंचने पर स्क्रॉलिंग रोकने के लिए अंदर एक आयत के साथ स्क्रॉलव्यूयर कैसे प्राप्त किया जा सकता है?
<ScrollViewer ManipulationMode="Control" x:Name="songScrollViewer" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled" Height="270" VerticalAlignment="Center" Width="728" Canvas.Top="20" d:LayoutOverrides="HorizontalMargin" >
<Rectangle x:Name="musicBG" Fill="#FF0692FD"/>
</ScrollViewer>
की तरह एक ScrollViewer के अंदर एक आयत बनाया है अनुप्रयोग, MusicBg परिवर्तन के आकार के उपयोग के दौरान,।
musicBG.Width = _songLength*PixelsPerSecond
हालांकि, ScrollViewer स्क्रॉल करते समय, यह मेरे स्क्रीन बंद सभी तरह आयत स्क्रॉल करने के लिए अनुमति देता है।
उदाहरण के लिए कोड की यह पंक्ति मुझे निम्न मान देता है जब मैंने आयत को स्थानांतरित किया है जहां तक मैं इसे स्थानांतरित करना चाहता हूं।
if (songScrollViewer.HorizontalOffset > songScrollViewer.ScrollableWidth)
HorizontalOffset ~ 1200 के एक मूल्य है और ScrollableWidth के बारे में ~ 2900 एक मूल्य है।
मैं इसे ठीक से कैसे किया जा सकता है ताकि आयताकार स्क्रीन से पूरी तरह से स्क्रॉल नहीं किया जा सके?
मैं लगभग 1200 के क्षैतिज ऑफसेट की अपेक्षा करता हूं कि आयत को इसके गंतव्य के माध्यम से केवल आधा रास्ते धक्का दे, और इसे स्क्रीन से बाहर जाने शुरू न करें।
उत्तर:
बहुत निराशा के बाद, मैं के बजाय कैनवास सीमा या आयत का उपयोग करके इस समस्या को हल करने में सक्षम था। यदि कोई यह समझा सकता है कि यह समस्या क्यों हुई है, और यदि कोई प्रोसेसर गहन नियंत्रण है जो कैनवास से बेहतर काम करेगा तो मैं अंक प्रदान करूंगा।
संपादित करें: स्क्रीन शॉट:
बुरा कोड:
अच्छा काम कर कोड:
<ScrollViewer ManipulationMode="Control" x:Name="songScrollViewer" Width="720" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled" Height="270" VerticalAlignment="Top" Canvas.Top="20" HorizontalAlignment="Left" >
<Canvas x:Name="musicBG" Background ="#FF0692FD" Height="270" >
<Border Background="#FF0692FD" VerticalAlignment="Top" HorizontalAlignment="Left" Height="270" />
</Canvas>
</ScrollViewer>
अच्छा
<ScrollViewer ManipulationMode="Control" x:Name="songScrollViewer" Width="720" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled" Height="270" VerticalAlignment="Top" Canvas.Top="20" HorizontalAlignment="Left" >
<Border x:Name="musicBG" Background="#FF0692FD" VerticalAlignment="Top" HorizontalAlignment="Left" Height="270" />
</ScrollViewer>
बुरा कोड के साथ बुरा पुस्तक की छवि स्क्रॉल: ध्यान दें कि यह 170 से कहता है खराब स्क्रॉल में 118 सेकंड की छोटी संख्या के बजाय नीचे दाईं ओर conds।
यदि आप इसे देखने में मदद करने के लिए जो वर्णन कर रहे हैं उसके बारे में एक स्क्रीन शॉट फेंकना चाहते हैं तो मैं निश्चित कर सकता हूं कि आप क्या हासिल करने की कोशिश कर रहे हैं, फिर भी, आप किसी भी ऑब्जेक्ट का उपयोग करने में सक्षम होना चाहिए पहले से ही कोशिश कर रहा है लेकिन आपको स्क्रॉल व्यूअर के व्यूपोर्ट में आकार जोड़ना पड़ सकता है और उसे ऑफसेट की भी आवश्यकता नहीं हो सकती है। वर्तमान में हालांकि आपके विवरण से कल्पना करना मुश्किल है लेकिन मुझे यकीन है कि हम इसे हल कर सकते हैं। –
@ChrisW। प्रश्न अपडेट किया गया। – Bob
यह बहुत अजीब बात है, यह तब तक पूरी तरह से काम करता है जब तक कि आयत 2000 के बाद बड़ा न हो जाए और फिर जब आप अंत तक स्क्रॉल करते हैं तो स्क्रीन को आगे और आगे बढ़ाना शुरू हो जाता है। आपने मेरी जिज्ञासा पकड़ी है .... – methodMan