سؤال

وأنا تكافح للعثور على معلومات كافية حول الخاصية الميراث شجرة (أو الإرث السياق) المستخدمة من قبل DependencyObject وDependencyProperty.

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

إذا تم derieved كائن ألف وكائن B من DependencyObject، و<م> لا الأطفال من UIElement (وبعبارة أخرى، الكائن هو انها الخاصة <م> الجذر )، ثم كيف هل إنشاء شجرة منطقية حتى يدرك أن DependencyProperty أن B هو طفل من A؟

Hillberg Freezable خدعة كما كذلك حقيبة جوش سميث من الحيل وليس تماما ما أنا أبحث إلى عن على. I <م> لا تريد استرداد خصائص من شجرة عنصر القائمة ... أريد أن إنشاء بلدي، شجرة عنصر غير المرئية ... أي السيطرة على سياق الإرث.

أحد يعرف أين هذه الهيئة من معرفة يختبئ؟

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

المحلول

وبعد الكثير من البحث والتخبط شفرة المصدر لDependencyObject، وهنا الجواب القصير:

ووInheritenceContext (الخاصية الذي يكشف عن الأم المنطقي مثيل) هو (مثل 90٪ من تنفيذ مفيدا للDependencyObject) وضعت الداخلية، وبالتالي تبقى مخفية من كافة التعليمات البرمجية خارج WindowsBase.dll

ومن الممكن استخدام انعكاس لتعيين الحقل _contextParent، فضلا عن أن نطلق على هذا طرق خفية لضبط InheritenceContext، ولكن في نهاية اليوم ليست حلا نظيفة.

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

نصائح أخرى

وأفترض أنك تسأل عن نشر القيم للأطفال التي لا تجاوز القيم نفسها.

ويتم إدخال مفهوم عنصر WPF إنجاب طفل من قبل ContentControl بقدر ما أعرف. يأتي هذا في اللعب أبعد من ذلك بكثير أسفل التسلسل الهرمي من تريد أن تذهب. لذلك، أود أن نفترض أنه إذا كانت لاستخلاص ببساطة من DependencyObject أن هذا السلوك لن البيان.

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

والسؤال للاهتمام. أود أن أعرف الجواب الكاملة أيضا.

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