سؤال

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

يضيف Controltemplate أيضا مديا إلى AdornerLayer كائنات الحركة التي تحتوي على علامة مرئية صغيرة لكل نقطة نقل خطية للخط المحدد. هذه العلامات تدعم السحب باستخدام الماوس.

المشكلة التي لدي هي أن فئات الحركة الخاصة بي بطريقة ما لا تجمع عندما يتم نقل نقاطهم. قمت بتصحيح التعليمات البرمجية الخاصة بي مع الخلد ووجدت أن مادة polyline المستخدمة لتصور السطر يحصل على قيم النقطة المتغيرة (مرئية في خاصية نقاطها) ولكنها فقط لا إعادة طلاء.

كيف يمكنني إجبار إعادة النظر في عنصر تحكم WPF؟

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

المحلول

لا يدعم TemplateBinding ربط البيانات ثنائية الاتجاه (أي تحديث مجموعة النقاط بالقيم الجديدة من polyline). من المفترض فقط لربط البيانات في اتجاه واحد للاستخدام في قوالب التحكم. انظر Bea Stollnitz مدونة الدخول: http://bea.stollnitz.com/blog/؟p=38.

نصائح أخرى

اتضح أن templateBinding هو الشر النقي.

عندما أرتبط بنقاط polyline بواسطة نقاط {templateBinding النقاط}، لا يتم تحديث نفسها، بينما عندما أرتبطها مع {الربط بين الأقاليم = {counterarsource templeatedparent}} يعمل بشكل مثالي.

لاحظ لنفسي: لا تستخدم هذه templateBinding هذه مرة أخرى.

تحتاج إلى جعل كائنات حركتك لدى DPS الخاص بك خاصية البيانات الوصفية المؤثرية (http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetatataoptata.aspx.) - بهذه الطريقة عندما تتغير الخاصية، يعرف WPF أنه يجب إعادة رسمه

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