WPF undercontrol - كيف تعرف متى تنتهي العناصر من التحميل ، حتى أتمكن من تركيز الأول؟

StackOverflow https://stackoverflow.com/questions/2492214

سؤال

لديّ عناصر في رأيي ، وهذا مرتبط بمشاهدة ObservableCollection من ViewModel. تم ملء المجموعة ، وبعد ذلك يتم رفع حدث من VM إلى عرض (فكر في نتائج البحث والحدث المثير للبحث).

أرغب في نقل تركيز لوحة المفاتيح إلى العنصر الأول في العناصر السينية ، لكن عندما أفعل ذلك في الرمز الرملي عند التعامل مع البحث ، لم يتم تقديم العناصر بعد (تم شغل المجموعة بالفعل ، ولكن عرض WPF غير متزامن ولم يتم عرضه يحدث حتى الآن) ، لذلك لا يوجد شيء للتركيز (FOCUS () يحتاج إلى أن تكون الشجرة المرئية للعناصر مبنية بالفعل).

كنت أرغب في القيام (myitemscontrol.itemContainerGenerator.ContainerFromIndex (0) كـ uiElement) .focus () ؛ ، ولكن نظرًا لأن العنصر 0 لم يتم تحميله بعد ، فإن حاوية الحاوية (0) يعود لاخارته.

حاولت تأخيره باستخدام Dispatcher.begininvoke ... بأولوية منخفضة ، لكن هذا يعتمد على التوقيت الدقيق وعادة ما لا يعمل.

كيف يمكنني الانتظار حتى يتم تحميل العنصر الأول في العناصر Control؟

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

المحلول

يمكنك استعمال ال ItemContainerGenerator.StatusChanged الحدث ، ثم تحقق منه Status منشأه. إذا Status == GeneratorStatus.ContainersGenerated, ، ثم يمكنك الحصول على الحاوية الأولى بأمان.

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