2014-05-13 7 views
5

(विंडोज फोन 8.1) से स्क्रॉल को फिर से शुरू करते समय सूची बॉक्स शीर्ष पर कूदता है मेरे ऐप में, मेरे पास एक सूची बॉक्स के साथ एक मुख्य पृष्ठ है। उसी पृष्ठ पर नेविगेट करते समय नेविगेशन कैशमोड को राज्य को संरक्षित करने के लिए आवश्यक सेट किया जाता है।अंतिम स्थिति

public MainPage() 
{ 
    this.InitializeComponent(); 
    this.DataContext = this; 

    // cache page 
    this.NavigationCacheMode = NavigationCacheMode.Required; 
} 

तो जब मैं एक पृष्ठ पर जाने के लिए और वापस मेरी mainpage प्रत्येक भाग को करने के लिए आते ही के रूप में मैं इसे छोड़ दिया लग रहा है। सूची बॉक्स भी कोरेंट स्थिति में है। लेकिन जब भी मैं इसे छूता हूं, यह स्क्रॉल करने से पहले शीर्ष पर कूद जाएगा ...

मैं इसे कैसे बना सकता हूं ताकि पहले शीर्ष पर जाने से पहले स्क्रॉलिंग फिर से शुरू हो जाए?

संपादित करें: हल

लिस्टबॉक्स तरह

लगता WP8.1 में, बजाय bugged है उपयोग ListView!

उत्तर

5

मुझे एक ही समस्या थी और यह पता चला कि यह मुख्य रूप से चुने गए आइटमपैनेल टेम्पलेट है जो बग का कारण बनता है।

सूची दृश्य का उपयोग करते समय, मानक आइटमपैनेल टेम्पलेट आइटमस्टैकपैनल है, जो ठीक काम करता है। यदि आप इसे वर्चुअलाइजिंगस्टैक पैनेल (ListBox के लिए मानक) में बदलते हैं तो बग प्रकट होता है। लेकिन केवल विंडोज फोन पर, विंडोज के लिए यह उम्मीद की तरह काम करता है।

तो मुझे लगता है कि, जब आप ListView के बजाय ListBox का उपयोग करना चाहते हैं, तो आपको आइटमस्टैक पैनेल को आइटम्सपैनेल टेम्पलेट के रूप में नेविगेशन कैशमोड के माध्यम से स्क्रॉल स्थिति को संरक्षित करने के लिए उपयोग करना होगा।

+0

मुझे यह बग भी मिल रहा है। वर्चुअलाइज्ड पैनल का उपयोग करने का कोई तरीका है, लेकिन मैन्युअल रूप से स्क्रॉल स्थिति को पुनर्स्थापित करें? –

+0

हां यह संभव है, लेकिन दुर्भाग्य से यह काफी प्रयास की जरूरत है। सबसे पहले आपको स्क्रॉलव्यूयर (http://msdn.microsoft.com/en-us/library/bb613579(v=vs.110).aspx का अंत) खोजने के लिए VisualTree को स्कैन करना होगा जो सूची समाप्त करने के बाद ही काम करता है । स्क्रॉलव्यूयर प्राप्त करने के बाद आप क्षैतिज/लंबवत ऑफसेट निकाल सकते हैं और इसे सहेज सकते हैं। उस पृष्ठ पर लौटने पर, आपको VisualTree को फिर से स्कैन करना होगा, स्क्रॉलव्यूअर प्राप्त करने के बाद और सूची सामग्री प्रदान की जाती है, आप अपनी सहेजी गई स्थिति (स्क्रॉलव्यूअर.ChangeView) पर स्क्रॉल कर सकते हैं। मुझे अब तक प्रतिपादन का इंतजार करने का कोई अच्छा तरीका नहीं मिला:/ – eberthold

+0

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

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