【发布时间】:2026-02-11 05:50:01
【问题描述】:
我正在开发一个 WPF 应用程序,现在我拥有许多不同的资源字典,其中包含大量样式。其中许多样式描述了边框、背景等的画笔设置。到目前为止,每种格式都采用单独的样式。
但是,我想做的(如果可能的话)是将属于“父”样式的不同样式“分组”为“父”样式 - 从而能够更易于管理哪些样式涉及哪些控件。
例如,对于 GroupBox,设置最好以如下样式注册:
<Style x:Key="GroupBoxFormat">
<Style.Resources>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1" x:Key="ElementGradientBrush">
<GradientStop Color="AntiqueWhite" Offset="0" />
<GradientStop Color="Tan" Offset=".7" />
</LinearGradientBrush>
<Border x:Key="BorderFormat" BorderThickness="2">
<Border.Background>
<SolidColorBrush Color="Gold"></SolidColorBrush>
</Border.Background>
<Border.BorderBrush>
<SolidColorBrush Color="Black" ></SolidColorBrush>
</Border.BorderBrush>
</Border>
<FontFamily x:Key="TitleFontFamily">
Arial
</FontFamily>
<FontWeight x:Key="TitleFontWeight">
Bold
</FontWeight>
<!-- Other formats go here... -->
</Style.Resources>
</Style>
如清单所示,样式中的所有单独资源都指定了 x:Key 属性。由于这似乎是必需的(如果缺少,VS 会抱怨),显然这肯定是有原因的。
从 XAML 代码的其他地方,可以使用 {StaticResource GroupBoxFormat} 引用样式。但是,如果我想从外部引用任何“内部”属性,例如“BorderFormat”,我该怎么做?类似于 C# 中的“点”符号,用于访问 SomeObject.SomeMember 等对象成员。停留在示例中,可以将其说明为“GroupBoxFormat.BorderFormat”。我只需要这样做的“XAML”方式。
【问题讨论】:
-
这里有一篇关于WPF resources的很好的文章。
标签: c# wpf xaml formatting