سؤال

لدي مربع قائمة وهو مرتبط بقائمة من الكائنات البسيطة.كما نعلم ، فإن مربع القائمة يحتوي افتراضيًا على عناصره المضيفة باعتبارها Stackpanel ولذا فإنه يضع العناصر بهذه الطريقة Genacodicetagpre

ومع ذلك ، لدي بعض الشروط التي يمكنني من خلالها التحقق مما إذا كان سيتم عرض العنصر أفقيًا أو رأسيًا ، وبالتالي يمكن ترتيب العناصر بهذه الطريقة

على سبيل المثال: - Genacodicetagpre

كيف يمكن القيام بذلك؟

(إذا كنت تتساءل عن سبب احتياجني لمثل هذا الشيء في أي وقت ، فسيكون أحد الأمثلة على ذلك "تحديثات نمط facebook" حيث إذا قام المستخدم بتحميل 3-4 صور باستمرار ، فلن تظهر دائمًا في السطر التالي ، ولكن قد يحدث ذلكتظهر أفقيًا بينما إذا نشر حدثًا ما ، فسيظهر في السطر التالي.)

شكرًا مقدمًا :)

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

المحلول

تتمثل أساسيات الحل في استخدام رمز ترميز عام آخر في كود الترميز العام للشفرة العامة.يجب أن يشتمل هذا الرمز العام على رمز علامة ترميز عام أفقي موجهًا ليكون بمثابة رمز ترميز عام خاص به.

فيما يلي مثال أساسي.لنبدأ ببعض بيانات الاختبار البسيطة جدًا: - Genacodicetagpre

نريد الآن عرض هذه القائمة في ListBox مع الاحتفاظ بجميع الأسماء التي لها نفس الحرف الأول في نفس السطر.سأستخدم تطبيقًا لرمز الكود العام للتعامل مع التجميع الذي نحتاجه.إذا كنت تستخدم MVVM ، فستحصل على ViewModel الخاص بك من هذا. Genacodicetagpre

ناتج هذا المحول هو في الأساس رمز ترميز عام وهو ما نريده.سيقوم مربع القائمة الخارجي بتعداد المجموعة الخارجية وسيقوم رمز الترقيم الداخلي بتعداد مجموعة السلاسل الداخلية التي ستكون مجموعة من الأسماء بنفس الحرف الأول.

ها هو xaml: -

Genacodicetagpre

نصائح أخرى

في حالة استخدام MVVM نمط سأفعل شيئًا مثل هذا:

  1. قم بإنشاء ViewModel للعرض الذي يوجد به مربع القائمة الخاص بك. يحتوي جهاز VM هذا على مجموعة من مثيلات رمز الترقيم العام (انظر النقطة التالية)
  2. قم بإنشاء ViewModel يسمى ListItemViewModel (أعطه اسمًا أكثر ملاءمة ، بناءً على المجال الخاص بك). يحتوي نموذج العرض هذا على مجموعة من مثيلات ItemViewModel (انظر النقطة التالية).
  3. قم بإنشاء نموذج عرض يسمى ItemViewModel. كل من هؤلاء يدعم عنصر واحد في القائمة. أعط هذا اسمًا أكثر ملاءمة بناءً على مجالك.
  4. قم بإنشاء عرض يحتوي على مربع القائمة الخاص بك. ربط مربع القائمة الخاص بك بمجموعة ListItemViewModels في VM. سيكون قالب العنصر لمربع القائمة هذا هو ListItemView (انظر النقطة التالية). سيكون قالب لوحة العناصر هو StackPanel الافتراضي.
  5. إنشاء ListItemView الذي يحتوي على سياق بيانات ListItemViewModel. يتكون هذا العرض من StackPanel أفقي لـ ItemViews (انظر النقطة التالية).
  6. إنشاء ItemView المدعوم من ItemViewModel.

ستبدو طريقة العرض الخاصة بك على هذا النحو ، ولكل منها نموذج ViewModel مؤكد.

كما قلت أعلاه ، سترغب بالتأكيد في تغيير اسم طرق العرض / نماذج العرض الخاصة بي ، فأنا أغراض العرض التوضيحي فقط :)

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