سؤال

لدي عنصر تحكم يمكننا تحديده كشبه تحكم ListBox. يتم تمثيل كل عنصر بعنصر واحد (مثال TextBlock). ما أود هو تغيير تخطيط هذا العنصر، بحيث يحتوي على اثنين من TextBlocks. لذلك أقوم بإنشاء جهاز التحكم، ووضع شبكة حدودية، twotextblocks، وكل شيء على ما يرام. الآن المشكلة:

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

الآن أحتاج أن أكون قادرا على فعل الشيء نفسه مع كلا TextBlocks. لذلك اعتقدت أنني بحاجة إلى إنشاء نوع مخصص لن يرتبط هذا العنصر، وفضح اثنين من propertiws: العنوان والوصف. إذا قمت بفضح هذه الخصائص كنوع سلسلة، فإن كل شيء يعمل موافقا، لكنني أفقد ملزما للعلامة التي استخدمتها سابقا. كيفية تحقيق نفسه مع اثنين من الممتلكات؟ يجب أن تكون النتيجة مثل: giveacodicetagpre.

كنت قادرا على جعل التعرية تعمل مع فئة ResourceMmanager، لكنها تصبح معقدة من أجل توفير التوطين لتطبيقه بشكل حيوي عند وقت التشغيل.

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

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

المحلول

عظيم!

سأفعل نفس الشيء الذي قمت به هنا. نعم، لدي حل لكنني لست متأكدا مما إذا كان يعمل حتى الآن.

أولا، نحن بحاجة إلى مجموعة متنوعة من القاموس الذي يحمل في القاموس.

على سبيل المثال، إذا كنت بحاجة إلى تجميع نافذة حساب المستخدم، فما عليك سوى القيام بذلك giveacodicetagpre.

وسيقوم locationationsmanagermanager بتعيين usernamekey إلى "اسم المستخدم" أو لغة أخرى

ثانية، امتداد XAML الذي يجد قيمة المفتاح من التحويلية.

أتساءل عما إذا كان بإمكان هذا التمديد المخصص مشتق من ملحق ملزم، إذا كان الأمر كذلك، فهذا سيكون من السهل جدا، فما عليك سوى إنشاء كائن ملزم للهدف. إذا لم يكن الأمر كذلك، فما أعتقد أن يحمل إشارة ضعيفة إلى UIELEMENT من قبل امتداد XAML للتحديث الديناميكي النص مناسب.

هذا الحل بسيط ولكن ليس عام. هناك بعض اللغات تقرأ من اليمين إلى اليسار. يطلب من التطبيق إظهار المحتوى من اليمين إلى اليسار.

لذلك، لدي حل عام آخر ولكن أكثر تعقيدا.

بدلا من امتداد Xaml، نستخدم خاصية إرفاق التبعية.

تفعل ذلك مثل هذا: giveacodicetagpre.

لذلك، المشكلة الآن هي كيفية تعيين الخاصية "النص" عن طريق التحويلية ...

نحن نستخدم المحولات، وسوف يبحث locationomationsmanager المحول المناسب عن نوع "TextBlock"

لذلك، عندما يتم تشغيل التطبيق، نسجل بعض المحولات إلى ترجمة: giveacodicetagpre.

هذا الحل هو أكثر عام، فهو يدعم أي نوع من التحكم إذا قمت بتوفير محول، ولكن كما ترى، يحتاج هذا الحل إلى مزيد من العمل وأكثر تعقيدا بكثير من السابق.

آمل أن تساعدك حلول التصميم هذه ~

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