كيفية تطبيق النمط العالمي على WPF TreeView في app.xaml
-
29-09-2019 - |
سؤال
لقد وجدت الرمز التالي لعرض العنصر المحدد في TreeView عند ترك Focus ، لكنني أواجه مشكلة في نقل الكود إلى App.xaml حتى يتمكن أي UserControl من استخدامه.
هذا يفعل ما أريد
<TreeView x:Name="trviewArchives" Width="141" Height="154" Canvas.Left="20" Canvas.Top="167" Background="{x:Null}" BorderBrush="#FF081827" BorderThickness="0">
<TreeView.Resources>
<TreeViewItem x:Key="bold" FontWeight="Bold" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Peru"/>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Peru"/>
</TreeView.Resources>
لكن لا يمكنني معرفة كيفية صنع نمط منه. لقد جربت ما يلي ، والتي تصحيح طبقات بشكل نحلي
<Style x:Key="TreeStyle" TargetType="{x:Type TreeView}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeViewItem">
<TreeViewItem>
<Setter x:Name="bold" Property="FontWeight" Value="Bold" />
</TreeViewItem>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
وفي Usercontrol
<TreeView x:Name="trviewArchives" Width="141" Height="154" Canvas.Left="20" Canvas.Top="167" Background="{x:Null}" Style="{DynamicResource ResourceKey=TreeStyle}"
BorderBrush="#FF081827" BorderThickness="0" >
عند نقطة واحدة ، أدرك رمز USERCONTROL النمط ، ولكن حاليًا لا يمكن حل "الموارد treestyle".
ما الخطأ الذي افعله؟
هل أحتاج إلى نطاق Treestyle نظرًا لأن مساحة الاسم (الوالدية) مختلفة؟ بمجرد أن أحصل عليه باستخدام النمط ، ما هو بناء الجملة لضبط الخصائص الأخرى؟
المحلول
تم إعداد المشروع في البداية كمكتبة فئة. في مكان ما في ملف المشروع ، أظن أنه يخبر WPF ما إذا كنت تريد البحث في app.xaml ، وإذا كانت صياغة ، فلن تنظر إلى هناك ، إلا إذا أخبرته بالتحديد أن تبحث في هذا الملف (قمت بدمج القاموس يبدو أن هذا يعمل).
لقد اكتشفت ذلك عندما تذكرت أنها كانت في السابق مكتبة الفصل ، لذلك قمت بنسخ الكود إلى مشروع جديد وكان كل شيء جيدًا.