WPF MVVM والآراء المتداخلة مع خصائص التبعية
-
05-07-2019 - |
سؤال
لديّ رؤية أحد الوالدين يحدد عرض الطفل في 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. أضف معالجًا يرسل البيانات التي تم تغييرها إلى نموذج العرض الخاص بك. قد أكون سوء فهم نيتك رغم ذلك.