عنصر الموارد أو USERCONTROL؟
-
20-09-2019 - |
سؤال
لدي بعض XAML لرسم شعار وأريد إعادة استخدام هذا في مختلف ملفات XAML أخرى (لا يوجد بها واجهة مستخدم ولا يتطلب رمزًا). المستوى العلوي من الشعار XAML هو أ Canvas
العنصر.
لاستخدام الشعار في ملفات XAML الأخرى ، من الأفضل تحديد هذا الشعار كعنصر في أ ResourceDictionary
أو إنشاء UserControl
?
هذا يبدو سهلاً مع أ UserControl
, ، ومع ذلك ، أريد تحميل ملفات XAML الخاصة بي مع XamlReader ، لذا فأنا أفضل استخدام الموارد بحيث يمكن تحديدها داخل XAML. يبدو من الممكن تخزين العناصر مثل أ Canvas
في ResourceDictionary
لكنني لست متأكدًا من كيفية الرجوع إليهم.
على سبيل المثال ، يمكنني تحديد شعوري على أنه أ ResourceDictionary
العنصر على النحو التالي:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas x:Name="LayoutRoot" x:Key="Logo">
<!-- My Logo -->
</Canvas>
</ResourceDictionary>
لكن كيف يمكنني استخدام هذا Logo
في ملفات XAML الأخرى الخاصة بي - ربما لدي فكرة خاطئة عن الموارد؟
المحلول
لقد وجدت أن الحل هو فرشاة بصرية. يمكنني تحديد هذا في الموارد على النحو التالي:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<VisualBrush x:Key="Logo">
<VisualBrush.Visual>
<Canvas x:Name="LayoutRoot" x:Key="Logo">
<!-- My Logo -->
</Canvas>
ثم فقط استخدم هذا البشرة البصرية عند الضرورة.
نصائح أخرى
عادة ، إذا كنت ترغب في إنشاء قاموس موارد لهذا ، فستقوم بعمل نمط. يمكنك بعد ذلك إسقاط عنصر تحكم ، وتنسيقه باستخدام موردك ، في أي ملف XAML آخر تمنيت.
ومع ذلك ، من المحتمل أن يكون UserControl خيارًا أسهل ، لأنه سيكون عنصرًا بسيطًا وقابل لإعادة الاستخدام الذي يمكنك إسقاطه في أي مكان.