سؤال

ولدي DataGrid قابلة للسيلفرلايت يحتوي على عمود قالب واحد الذي يعرض عنصر تحكم المستخدم. عنصر تحكم المستخدم لديها شريط التقدم لتمثيل تجهيز وعند انتهاء المعالجة للرسوم المتحركة يخفي شريط التقدم ويظهر التسمية النهائية.

وهناك نوعان من الحالات التي في DataGrid لا يبدو لإعادة رسم نفسه:

<القوي> أولا ، أو عندما يقوم المستخدم يفعل الكثير من التمرير ثم سوف تبدأ في DataGrid من إعادة رسم الرسوم المتحركة عندما يأتي في UserControl في طريقة العرض، وسوف تصل في النهاية إلى نقطة حيث أنه لا إعادة رسم أي شيء.

<القوي> الثانية ، أو هناك الحدث انقر فوق في في UserControl الذي يعرض المنبثقة. عندما يتم إغلاق النوافذ المنبثقة ثم مرة أخرى فشل UserControl إلى إعادة رسم نفسه بشكل صحيح.

وأي أفكار لماذا يحدث هذا السلوك وسبل حوله؟

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

المحلول

والجواب السابقة صحيحة. لقد وجدت أنه في بعض الأحيان عليك أن التعامل الصحيح مع Loading_Row وUnloading_Row الأحداث إذا كنت تريد أي من عناصر التحكم الخاصة بك على التصرف بشكل صحيح. في بلدي الحالات ذات خصائص عناصر تحكم منضمة فعلا إلى كائن أن تعمل بشكل أفضل. إذا حاولت الاعتماد على الرسوم المتحركة وضوح وكأنك سوف تشاهد سلوك غريب ولكن إذا كنت ربط progressbar إلى كائن والحفاظ على التقدم لكل بند وراء الكواليس ثم في كل مرة يظهر هذا الصف سوف rebind وإعادة رسم.

نصائح أخرى

وعليك أن تفهم أن DataGrid قابلة لايوجد مثيل واحد من التحكم الخاصة بك لكل صف في الشبكة. مصدر البيانات يمكن أن يكون الملايين من الصفوف، في حين أن الشبكة لا يحتاج أكثر من مثيلات التحكم الخاصة بك من شأنه أن يصلح على الشاشة. وهذا يعني أنه عند التمرير، على سبيل المثال، فإنه لا يكشف النقاب عن حالات التحكم الخاصة بك غير مرئية في السابق. انها مجرد يعين الضوابط المرئية حاليا مهما كانت هناك حاجة إلى القيم لجعل العرض الصحيح للموقف التمرير الحالي.

وأنا لا أعرف إذا كان هناك حل بديل.

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