小编Z L*_*ang的帖子

使用 WPF 为多个动态皮肤字典创建别名颜色定义

我正在尝试在大型 WPF 应用程序中设置主题框架。目前我们找到的解决方案是为每个调色板创建单独的 .xaml 文件,如下所示:

<LightColors.xaml>
<Color x:Key="MainPanelColor">Aqua</Color>
<Color x:Key="MainItemColor">Orange</Color>
<SolidColorBrush x:Key="MainPanelBrush" Color="{StaticResource MainPanelColor}" />
<SolidColorBrush x:Key="MainItemBrush"  Color="{StaticResource MainItemColor}" />
Run Code Online (Sandbox Code Playgroud)

然后 UI 会像这样引用这些项目:

<Textblock Foreground="{DynamicResource MainItemBrush}"/>
Run Code Online (Sandbox Code Playgroud)

在 C# 中,调色板在运行时会更改。该主题框架完成了允许在运行时更改主题的任务。

问题:我想在 UI 和颜色之间创建一个层,以便调色板颜色可以链接到整个 UI 中使用的大量颜色定义。我发现接近有效的唯一解决方案是添加如下文件:

<ColorDefinitions.xaml>
<DynamicResource x:Key="Textblock_SetupPage_Foreground" ResourceKey="MainItemBrush" />
<DynamicResource x:Key="SecondDefinition" ResourceKey="MainItemBrush" />
Run Code Online (Sandbox Code Playgroud)

并在 UI 中引用这个新资源,如下所示:

<Textblock Foreground="{StaticResource Textblock_SetupPage_Foreground}" />
Run Code Online (Sandbox Code Playgroud)

不过,这个解决方案并不能完全发挥作用。它只允许单个 UI 元素使用 DynamicResources 之一,例如“Textblock_SetupPage_Foreground”,并且将 Textblock 引用更改为 DynamicResource 会产生错误。我怎样才能完成这个任务?

c# wpf xaml themes dynamicresource

5
推荐指数
1
解决办法
837
查看次数

标签 统计

c# ×1

dynamicresource ×1

themes ×1

wpf ×1

xaml ×1