2012-10-31 15 views
18

ठीक है, इसलिए, हर कोई जानता है कि स्क्रॉल व्यूअर की स्क्रॉल स्थिति कैसे सेट करें। संपूर्ण निबंध और ब्लॉग प्रविष्टियां ScrollViewer.ScrollToVerticalOffset() के बारे में लिखी गई हैं, और यहां इसके बारे में कुछ जवाब दिए गए हैं।सी #/डब्ल्यूपीएफ - स्क्रॉलव्यूयर स्क्रॉल स्थिति प्राप्त करें?

तो, मैं दर्ज करें:

myScrollViewer.ScrollToVerticalOffset(280); 

... और यह उस स्थान पर तो कृपया स्क्रॉल।

प्रश्न है, क्या संपत्ति अब 280 है, इसलिए मैं इसे बाद में पुनर्प्राप्त कर सकता हूं?

(संकेत: myScrollViewer.VerticalOffset और ContentVerticalOffset दोनों 0 कर रहे हैं; myScrollViewer.ScrollInfo सादे मौजूद नहीं है।)

संपादित करें: जाहिर है मैं एक अधिक विस्तृत प्रदर्शन की जरूरत है।

private void btnTest_Click(object sender, RoutedEventArgs e) { 
    double scrollTarget = 280; 
    MessageBox.Show("Target: " + scrollTarget.ToString()); 
    myScrollViewer.ScrollToVerticalOffset(scrollTarget); 
    MessageBox.Show("Now: " + myScrollViewer.VerticalOffset); 
} 

मैं दोहराना चाहिए इस स्क्रॉल है कि के रूप में इरादा। ठीक वहीं जाता है जहां मैं इसे चाहता हूं। लेकिन, myScrollViewer.VerticalOffset 0.

+0

पढ़ना एमएसडीएन, 'वर्टिकल ऑफसेट' या 'कंटेंट वर्टिकल ऑफसेट' आपको सही मूल्य देना चाहिए ... आप किस बिंदु पर इन गुणों तक पहुंच रहे हैं (जब वे 0 का मूल्यांकन करते हैं)? –

उत्तर

23

समाधान myScrollViewer.UpdateLayout()myScrollViewer.ScrollToVerticalOffset() के बाद मैन्युअल रूप से कॉल करना है। फिर, myScrollViewer.VerticalOffset अपेक्षित मूल्य होगा।

4

पर सेट है, सुनिश्चित करें कि लेआउट अपडेटेड ईवेंट को निकाल दिए जाने के बाद आपकी वर्टिकलस्क्रोलबार दृश्यता = "दृश्यमान" और वर्टिकलस्क्रोलऑफसेट 280 हो जाएगा।

0

मुझे लगता है कि आप विंडो के निर्माता में myscrollViewer को कॉल कर रहे हैं।

जब आप किसी बटन पर क्लिक करते हैं या विंडो के लिए लोड विधि में कॉल करते हैं, तो मूल्य वर्टिकल ऑफसेट मानों में अपडेट हो जाता है। यही है, आपकी विंडो को आरंभ करने के बाद ये मान अपडेट हो जाते हैं!

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