سؤال

لديّ رؤية أحد الوالدين يحدد عرض الطفل في XAML. منظر الطفل لديه ملف DependencyProperty هذا مرتبط بعرض ViewModel الخاص بالوالدين. ومع ذلك ، هناك حاجة أيضًا إلى هذه القيمة من قبل ViewModel للطفل.

<custom:Parent>
  <custom:Child ChildId="{Binding ParentFooId}" ... />
</custom:Parent>

ChildId يتم تنفيذها كخاصية التبعية ChildView مراقبة. إذا ChildViewModel الاحتياجات ParentFooId, ، ما هي طريقة MVVM المناسبة للحصول عليها؟

لا أريد أن ألقي DataContext التابع ChildView الى ChildViewModel وتعيين القيمة في أ OnChildIdChanged معالج ChildView. هذا لا يبدو mvvm-ish بالنسبة لي.

البديل الآخر الذي فكرت فيه هو إنشاء جديد ChildViewModel مع القيمة وتعيينها على أنها DataContext في ال OnParentFooIdChanged الحدث (في ParentViewModel) ؛ لكن هذا لا يبدو صحيحًا تمامًا أيضًا ، حيث من المفترض أن تكون Viewmodels غافلة عن العرض (وبالتالي لا تعرف أي شيء عنها DataContextس).

يبدو أنني أفتقد شيئًا واضحًا ...

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

المحلول

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

نصائح أخرى

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

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