WPF undercontrol - كيف تعرف متى تنتهي العناصر من التحميل ، حتى أتمكن من تركيز الأول؟
-
21-09-2019 - |
سؤال
لديّ عناصر في رأيي ، وهذا مرتبط بمشاهدة ObservableCollection من ViewModel. تم ملء المجموعة ، وبعد ذلك يتم رفع حدث من VM إلى عرض (فكر في نتائج البحث والحدث المثير للبحث).
أرغب في نقل تركيز لوحة المفاتيح إلى العنصر الأول في العناصر السينية ، لكن عندما أفعل ذلك في الرمز الرملي عند التعامل مع البحث ، لم يتم تقديم العناصر بعد (تم شغل المجموعة بالفعل ، ولكن عرض WPF غير متزامن ولم يتم عرضه يحدث حتى الآن) ، لذلك لا يوجد شيء للتركيز (FOCUS () يحتاج إلى أن تكون الشجرة المرئية للعناصر مبنية بالفعل).
كنت أرغب في القيام (myitemscontrol.itemContainerGenerator.ContainerFromIndex (0) كـ uiElement) .focus () ؛ ، ولكن نظرًا لأن العنصر 0 لم يتم تحميله بعد ، فإن حاوية الحاوية (0) يعود لاخارته.
حاولت تأخيره باستخدام Dispatcher.begininvoke ... بأولوية منخفضة ، لكن هذا يعتمد على التوقيت الدقيق وعادة ما لا يعمل.
كيف يمكنني الانتظار حتى يتم تحميل العنصر الأول في العناصر Control؟
المحلول
يمكنك استعمال ال ItemContainerGenerator.StatusChanged
الحدث ، ثم تحقق منه Status
منشأه. إذا Status == GeneratorStatus.ContainersGenerated
, ، ثم يمكنك الحصول على الحاوية الأولى بأمان.