gpt4 book ai didi

c# - WPF 默认 DynamicRessource 值

转载 作者:行者123 更新时间:2023-12-04 17:53:54 25 4
gpt4 key购买 nike

有没有办法在自定义控件库中为动态资源保存一个默认值?

我已经创建了一个自定义控件库,因此我使用了位于 Generic.xaml 文件中的默认样式。这种“默认样式”使用对动态资源标记的引用(参见示例)。

<Style TargetType="{x:Type local:BorderlessWindow}">
<Setter Property="Foreground" Value="{DynamicResource ForegroundColor}" />
<Setter Property="Background" Value="{DynamicResource BackgroundColor}" />
<Setter Property="TitleBackground" Value="{DynamicResource AltBackgroundColor}" />
<Setter Property="Template" Value="{StaticResource DefaultBoderlessWindowTemplate}" />
</Style>

如果我在新项目中引用我的自定义控件库并在此新项目 app.xaml 中添加动态资源标记,一切都会按预期工作,但如果我不这样做,则值为空。

所以我想要某种默认值。换句话说:

“取 {DynamicResource ForegroundColor} 的值,如果不存在,则取蓝色。”

我以为我只需要在 Generic.xaml (MergedDictionary) 中添加默认值,但这不会完成这项工作。有人有解决方案吗?

我能想到的唯一解决方案是用具体(默认)值(例如蓝色、绿色、黑色)替换 dynamicResource 标记,并在“消费”应用程序中处理资源(如果您明白我的意思的话)。

最佳答案

在 InitializeComponent 之后,您可以查看是否找到了您需要的资源,如果没有则添加一个默认值。

    public MainWindow()
{
InitializeComponent();

try
{
var resource = FindResource("ForegroundColor");
}
catch (ResourceReferenceKeyNotFoundException)
{
Resources.Add("ForegroundColor", new SolidColorBrush(Colors.Red));
}
}

关于c# - WPF 默认 DynamicRessource 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42118008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com