Silverlight 4: تغيير السمات/الأساليب للتطبيق بأكمله دون استخدام مجموعة الأدوات
-
25-09-2019 - |
سؤال
نحن نبدأ في أول مشروع Silverlight لدينا ، قادم من WPF. إنها بوابة ويب بسيطة نسبيًا ونود تجنب الإشارات إلى مجموعة أدوات Silverlight ، بالنظر إلى تجربتنا مع مجموعة أدوات WPF.
أنا لست مشفرًا كثيرًا ولدي أسئلة متعلقة بالموضوعات:
الأنماط الضمنية تجعل هذا أسهل. يبدو من الواضح أنه يمكنك فقط تبديل قواميس الموارد لتغيير موضوعك. كيف أفعل هذا دون الاعتماد على مجموعة الأدوات؟
كيف يمكنني تطبيق الأنماط على التطبيق بأكمله ، كما هو الحال في WPF ، بدلاً من لف الأشياء في حاويات السمة؟ أرى أن هناك تطبيقًا يمكنك استخدامه ، لكن هذا يتطلب مجموعة الأدوات.
شكرًا.
المحلول
مجرد ملاحظة على مجموعة أدوات Siverlight. في المرة الأخيرة التي استخدمت فيها مجموعة أدوات WPF (التي كانت منذ فترة) ، حصلت على انطباع بأنه كان اختياريًا أو أقل. لن أقول أن الشيء نفسه ينطبق على مجموعة أدوات Silverlight. إنه يضيف قدرًا كبيرًا من الوظائف المهمة التي سيكون من الصعب تنفيذها بمفردك ، وعلى الرغم من أنها ليست خالية من الأخطاء ، إلا أنها موثوقة جدًا. لا يمكنني أن أؤكد كل جانب من جوانب ذلك ، لكننا نستخدمه على نطاق واسع في مشروع Silverlight كبير (حوالي 30 ألف خط من الكود) ، ونجده لا غنى عنه. ما لم تكن على دراية بقضايا محددة سيواجهها مشروعك ، أوصي بإعادة التفكير في قرارك بعدم استخدامه.
نصائح أخرى
يعد تطبيق النمط على التطبيق بالكامل مهمة بسيطة في Silverlight 4. ضع هذا الرمز في app.xaml أو السمات/generic.xaml:
<!-- Sample style for each button in the application -->
<Style TargetType="Button">
</Style>
هذه المقالة يمكن أن تساعدك:http://www.silverlightshow.net/items/implicit-styles-in-silverlight-4.aspx
يمكنك تغيير قاموس الموارد بهذه الطريقة:
var dict = Application.Current.Resources.MergedDictionaries.FirstOrDefault(rd => rd.Source == new Uri("Dictionary1.xaml", UriKind.Relative));
if (dict != null)
dict.Source = new Uri("Dictionary2.xaml", UriKind.Relative);