سؤال

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

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

لقد فكرنا في طريقة أخرى للقيام بذلك ولكننا لم نتمكن من تفعيلها.في Init() (لنموذج عرض التفاصيل) نقوم فقط بتمرير المعرف (للتذكرة التي تم النقر عليها) وأردنا استخدام Mvx.Resolve للحصول على نموذج العرض الرئيسي.لذا فإن السؤال الأول هو: هل يمكنك جلب نماذج عرض عشوائية داخل نماذج عرض أخرى؟

تتمثل الفكرة الثانية في كتابة فئة نموذج العرض الأساسي التي ترث منها جميع نماذج العرض في تطبيقنا، والتي تسجل نموذج العرض عند إنشاء مثيل لخدمة ما بحيث يمكنك استدعاء تلك الخدمة وجلب نموذج العرض من أي مكان (نمط الوسيط).هل سيكون ذلك مخالفًا للإطار؟

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

لذلك لتلخيص الأسئلة:

  1. هل من الممكن جلب نماذج عرض معينة من إطار العمل داخل نماذج عرض أخرى؟
  2. فهل تنفيذ ذلك يدوياً سيكون مخالفاً للإطار؟
  3. هل فهمنا نهج الرسالة بشكل صحيح، وإذا لم يكن الأمر كذلك، فما هي الطريقة الأكثر خفيفة/العامة للقيام بذلك؟

هتاف وشكر

توم

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

المحلول

عادةً عندما يتعين علي مشاركة البيانات عبر نماذج العرض، أستخدم خدمة لإدارتها.يتم عادةً تقديم الخدمة عبر IoC.

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

بالنسبة للسيناريو الخاص بك، أود أن يكون MasterViewModel تمرير معرف إلى DetailViewModel, ، حيث سيطلب من ConfigurationService للتكوين عن طريق المعرف.

أتمنى أن يساعدك هذا.

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