قواميس الموارد المدمجة
مواردWindows Presentation Foundation (WPF) تدعم ميزة قاموس المورد المدمج. توفر هذه الميزة طريقة لتعريف جزء الموارد من WPF التطبيق خارج التطبيق المترجم XAML . يمكن بعض ذلك مشاركة الموارد عبر التطبيقات و هي أيضاً أكثر عزلا من أجل الترجمة.
تقديم قاموس مورد مدمج
في العلامات ، تستخدم بناء الجملة التالي لتقديم قاموس مورد مدمج إلى صفحة:
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="myresourcedictionary.xaml"/>
<ResourceDictionary Source="myresourcedictionary2.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
لاحظ أن ResourceDictionary عنصر ليس له س: مفتاح سمة ، وهو بشكل عام مطلوب لكافة العناصر في مجموعة الموارد. و لكن آخر ResourceDictionary مرجع داخل MergedDictionaries المجموعة هي حالة خاصة, محفوظة لسيناريو قاموس المورد المدمج هذا. ResourceDictionary الذي يقدم قاموس مورد مدمج لا يمكن أن يكون له س: مفتاح سمة. بشكل عام، كل ResourceDictionary داخل MergedDictionaries مجموعة تحدد Source السمة. قيمة Source يجب أن يكون معرف موارد منتظم (URI) التي ينتج عنها موقع ملف الموارد الذي سيتم دمجه. جهة ذلك URI يجب أن يكون ملف آخر XAML، مع ResourceDictionary كعنصر الجذر الخاص به.
ملاحظة |
---|
من القانوني تعريف الموارد ضمن ResourceDictionary التي تم تعيينه على أنه قاموس مدمج, إما كبديل لتحديد Source, أو بالإضافة إلى أي موارد يتم تضمينها من المصدر المحدد.ومع ذلك، لا يعد هذا سيناريو شائع; السيناريو الرئيسي بالنسبة للقواميس المدمجة هو دمج الموارد من مواقع الملف الخارجي.إذا كنت تريد تحديد الموارد ضمن العلامات لصفحة ، يجب أن تقوم عادةً بتعريف هذه في الرئيسي ResourceDictionary وليس في القواميس المدمجة. |
سلوك القاموس المدمج
الموارد في القاموس المدمج تشغل موقع في نطاق بحث المورد التي تكون فقط بعد نطاق دمج قاموس المورد الرئيسي. على الرغم من أن مفتاح المورد يجب أن يكون فريداً أي قاموس فردي, يمكن أن يوجد مفتاح عدة مرات في مجموعة من القواميس المدمجة. في هذه الحالة، ستأتي الموارد التي تم إرجاعها التي تم العثور عليها في القاموس الأخير بشكل متتالي في MergedDictionaries المجموعة. إذا كان MergedDictionaries مجموعة تم تحديدها في XAML ثم ترتيب القواميس المدمجة في المجموعة هو ترتيب عناصر تم توفيرها في العلامات. إذا تم تعريف مفتاح في القاموس الأساسي و أيضاً في القاموس الذي تم دمجه, ثم المورد الذي سيتم إرجاعه سيأتي من القاموس الرئيسي. قواعد المجال هذه تطبق بالتساوي على كل مراجع المورد الثابت و مراجع المورد الحيوي.
قواميس و التعليمات البرمجية المدمجة
يمكن إضافة القواميس المدمجة إلى Resources قاموس من خلال التعليمات البرمجية. افتراضي ، فارغة مبدئياً ResourceDictionary موجودة لأي Resources خاصية له أيضاً افتراضي, فارغ مبدئياً MergedDictionaries خاصية مجموعة. لإضافة قاموس مدمج من خلال التعليمات البرمجية, تحصل على مرجع إلى الأساسي المطلوب ResourceDictionary ، الحصول به MergedDictionaries خاصية القيمة ثم استدعاء Add على العام Collection المضمن في MergedDictionaries. الكائن المضاف يجب أن يكون جديد ResourceDictionary. في التعليمات البرمجية، عدم تعيين Source الخاصية. بدلاً من ذلك، يجب الحصول على ResourceDictionary الكائن إما بإنشاء واحد أو تحميل واحد. طريقة لتحميل موجودة ResourceDictionary لاستدعاء XamlReader.Load على موجودة XAML دفق ملف يحتوي على ResourceDictionary الجذر ثم ببث XamlReader.Load قيمة الإرجاع إلى ResourceDictionary.
قاموس المورد المدمج URI
توجد عدة أساليب لكيفية تضمين قاموس المورد المدمج المشار إليه بواسطة معرف موارد منتظم (URI) التنسيق الذي سيتم استخدامه. التحدث على نطاق واسع, هذه التقنيات يمكن تقسيمها إلى فئتين: الموارد التي يتم تحويلها برمجياً كجزء من المشروع و الموارد التي لا يتم تحويلها برمجياً كجزء من المشروع.
للموارد المترجمة كجزء من المشروع يمكن استخدام المسار النسبي الذي يشير إلى موقع المورد. يتم تقييم المسار النسبي أثناء التحويل البرمجي. يجب تعريف المورد الخاص بك كجزء من المشروع في إجراء بنية المورد. إذا قمت بتضمين ملف .xaml في المشروع كمورد لا تحتاج إلى نسخ ملف المورد إلى دليل الإخراج، المورد تم بالفعل تضمينه داخل التطبيقات المترجمة. يمكنك أيضاً استخدام إجراء بنية المحتوى، لكن يجب أن تنسخ الملفات إلى دليل الإخراج و أيضاً تنشر ملفات الموارد في نفس مسار العلاقة إلى الملف القابل للتنفيذ.
ملاحظة |
---|
لا تستخدم إجراء إنشاء "الموارد المضمنة".إجراء الإنشاء نفسه مدعم من أجل WPF التطبيقات، ولكن الدقة Source لا تدمج ResourceManager ، وبالتالي لا يمكن فصل المورد الفردي من خارج الدفق.يمكنك استخدام "المورد المضمّن" لأغراض أخرى طالما يمكنك أيضاً استخدام ResourceManager للوصول إلى الموارد. |
تقنية ذات صلة هي استخدام حزمة URI XAML ملف ، ثم أشر إليه على أنه مصدر. تمكن حزم URI مراجع إلى المكونات للتجميعات المشار إليها و التقنيات الأخرى. للحصول على مزيد من المعلومات حول حزم URIs ,راجع موارد التطبيق WPF و المحتوى و الملفات البيانات.
الموارد التي لا يتم تحويلها برمجياً كجزء من المشروع, لا يتم تقييم URI في وقت التشغيل. يمكنك استخدام نقل URI شائع مثل ملف: أو http: الإشارة إلى ملف المورد. ومن سيئات استخدام إتجاه المورد الغير محول برمجيا هو ذلك الملف: الاتصال يتطلب خطوات نشر إضافية, و http: يتضمن الوصول إلى منطقة إنترنت آمنة.
إعادة استخدام القواميس المدمجة
يمكنك إعادة استخدام أو مشاركة قواميس الموارد المدمجة بين التطبيقات، لأن قاموس المورد للدمج يمكن الرجوع إليه من خلال أي صالح معرف موارد منتظم (URI). كيفية القيام بذلك تعتمد بالضبط على التطبيق الخاص بك و استراتيجية إيجاد التطبيق الذي تقوم بإتباعه. استراتيجية حزمة URI توفر طريقة شائعة لجعل مورد مدمج مصدر عبر عدة مشاريع أثناء التطوير قبل مشاركة مرجع التجميع. في هذا السيناريو لا يزال يتم توزيع الموارد من قبل العميل، و يجب على تطبيق واحد على الأقل نشر التجميع المشار إليه. من الممكن أيضاً إرجاع موارد مدمجة خلال URI موزع يستخدم بروتوكول http.
كتابة قواميس مدمجة كملف تطبيق محلي أو لتخزين محلي مشترك هو قاموس آخر مدمج محتمل/ سيناريو نشر التطبيق.
ترجمة
إذا كانت الموارد التي يجب أن تكون مترجمة معزولة إلى القواميس التي يتم دمجها في القواميس الرئيسية, و الاحتفاظ بها مثل XAML ، هذه الملفات يمكن أن تكون مترجمة بشكل منفصل. هذه التقنية بديلاً خفيفاً لترجمة تجميعات مورد القمر الصناعي. للمزيد من التفاصيل ، راجع نظرة عامة حول التعميم و التعريب.