سؤال

انا املك ListBox التي قد تحتوي على العديد من صفوف سجلات قاعدة البيانات النموذجية، بما في ذلك Image, ، ملزمة ل ObservableCollection<MyItem>.في بعض الأحيان يمكن أن تحتوي المجموعة على آلاف العناصر.

الأداء رائع، لكن التمرير هو السلوك المتقلب الافتراضي.أود أن يكون التمرير سلسًا، لذلك قمت بإلغاء التحديد ScrollViewer.CanContentScroll.

الآن لدي تمرير سلس، لكن الأداء مروع:يتم استرداد البيانات في موضوع منفصل، وينتهي الموضوع بسرعة، ولكن الأمر يستغرق من 10 إلى 20 ثانية حتى تظهر النتائج في ListBox.أفترض أن هذا بسبب إلغاء التحديد ScrollViewer.CanContentScroll يغير الأساس VirtualizingStackPanel إلى منتظم StackPanel ولذلك يتم تحميل المجموعة بأكملها قبل عرض النتائج.

لذا سؤالي هو هذا:كيف يمكنني الاحتفاظ بالتمرير السلس دون التضحية بـ VirtualizingStackPanel السلوك والأداء؟

هل كانت مفيدة؟

المحلول

عند قمت بإلغاء تحديد CanContentScroll، يمكنك تفقد الافتراضية . والجواب هو محبط حقا: الآن لا يوجد حل الخروج من مربع: (

وPS: ليست هذه هي المشاركة الأولى هنا، يسأل <لأ href = "https://stackoverflow.com/questions/1033841/is-it-possible-to-implement-smooth-scroll-in-a-wpf -listview "> هذا السؤال جدا .

نصائح أخرى

إذا كنت تستخدم .NET 4.5 (أو 4.0 إذا كنت ترغب في الاختراق قليلاً) فهناك إجابة هنا.

[لاحظ أن تعليق @Guilluame كان هنا قبل هذه الإجابة بكثير ولكنه لم يكن مرئيًا بشكل خاص عند البحث عن الإجابات.]

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top