يجب أن يكون لديك ViewModel مراعاة من المشاهدات أو المشاهدين؟

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

سؤال

أحاول فهم نهج تصميم MVVM الأساسي عند استخدام itemscontrol. عن طريق ربط ذلك عن طريق datatemplates. ل ملاحظات على viewmodel.

لقد رأيت أمثلة ترتبط بملاحظات سلاسل, الآراء, ، و ViewModels..

يبدو أن ربط السلاسل فقط من العروض العامة, ، إنه ملزم "ViewModels التي تحتوي على مجموعات من وجهات النظر التي تحتوي على مجموعات من العارض"يبدو أن قوة WPF قد خرجت حقا.

بالنسبة لأولئك في استخدام نمط MVVM، ما هو نهجك المعياري في Binding InditureControl، ListView، ListBox إلى مجموعات في ViewModel؟ أبحث عن نصيحة من تجربة مثل هذا:

  • استخدم دائما ObsementableCollection <...> ولم ندرز أبدا <...> بسبب ...
  • شيء أفضل من itemscontrol لعرض مجموعة هو ...
  • من أجل الحصول على تصفية للعمل في ViewModel الخاص بك بدلا من الكود-وراءه، استخدم ...
  • استخدام مجموعات من وجهات النظر عند ... ومجموعات المشتذلة عند ...
  • 90٪ من الوقت أقوم بإنشاء معنويات وأرسلها إلى الملاحظات من المشاهدات التي تحتوي على ViewModels الخاصة بهم ...
هل كانت مفيدة؟

المحلول

أود استخدام الملاحظاتولة من العارض للأسباب التالية:

  • يحتوي ObsementableCollection بالفعل على أحداث متاحة للإشارات عندما تم تعديلها (على سبيل المثال، عند إضافة / إزالتها عناصر من المجموعة).
  • نحن في "طبقة" ViewModel، فهذا يوفر فصلا نظيفا أن يحتوي على ViewModel يحتوي على مجموعة من العارضين بدلا من وجهات النظر
  • إذا كان من الضروري تعديل أو احصل على البيانات من العناصر داخل المجموعة، فيمكنك بسهولة تعديل / الوصول بسهولة إلى أن العناصر إذا كانت العناصر هي المشاهد (إذا كانت المشاهدات، فستتمكن في كثير من الأحيان DataContext طريقة العرض أو الوصول إلى عناصر UI الخاصة بها).

نصائح أخرى

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

لدي نفس السؤال، ولكن استبدال "عرض" مع "النموذج". :)

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

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