كيف ترث/تمديد الأنماط من قاموس الموارد؟
-
26-09-2019 - |
سؤال
أواجه مشكلة في توسيع أحد أنماطي التي حددتها في قاموس Windows. وحده ، يبدو أنه ينطبق على الأسلوب على أدوات التحكم الخاصة بي كما هو متوقع. ومع ذلك ، إذا حاولت تمديد النمط في أحد UserControls الخاص بي ، باستخدام خاصية المستندة إلى ، فإنه يتجاوز ببساطة النوع الرئيسي وجميع الأنماط الأساسية. هذا مثال:
في قاموس الموارد ، المسماة dict1.xaml:
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Pink"/>
</Style>
في النافذة الرئيسية. xaml:
<Window.Resources>
<ResourceDictionary Source="dict1.xaml"/>
</Window.Resources>
في عنصر تحكم المستخدم يسمى UserControl1.xaml:
<UserControl.Resources>
<Style BasedOn="{StaticResource {x:Type Button}}"
TargetType="{x:Type Button}">
<Setter Property="FontWeight" Value="Bold"/>
</Style>
</UserControl.Resources>
يتجاوز النمط في عنصر تحكم المستخدم ببساطة الشخص الموجود في قاموس الموارد والخط جريئًا. إذا قمت بإزالة النمط في عنصر تحكم المستخدم ، فإن النمط الموجود في القاموس يبدأ وتصبح الخلفية وردية. اريد كلاهما.
أي أفكار ما أفعله خطأ هنا؟
شكرًا.
المحلول
تحتاج إما إلى إضافة القاموس إلى موارد USERCONTROL ، أو إضافته إلى App.xaml Resources.
كما هو الحال ، لا يمكن لـ USERCONTROL حل هذا StaticResSource - إنه في نطاق USERCONTROL ، وليس النافذة ، إذا كان ذلك منطقيًا.