gpt4 book ai didi

c# - 如何在运行时更改 SolidColorBrush 资源的颜色?

转载 作者:太空狗 更新时间:2023-10-30 00:24:50 24 4
gpt4 key购买 nike

如何在运行时更改正在另一个资源字典中使用的资源字典的颜色?

这是我的设置:

Colours.xaml:

<SolidColorBrush x:Key="themeColour" Color="#16A8EC"/>

样式.xaml:

<Style x:Key="titleBar" TargetType="Grid">
<Setter Property="Background" Value="{DynamicResource themeColour}"/>
</Style>

Window.xaml

.....
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="res/Styles.xaml"/>
<ResourceDictionary Source="res/Colours.xaml"/>
</ResourceDictionary.MergedDictionaries>
.....

<Grid Style="{DynamicResource titleBar}"></Grid>

代码隐藏:

Application.Current.Resources["themeColour"] = new SolidColorBrush(newColour);

当代码运行时,网格的颜色不会改变。我不认为 Application.Current.Resources["themeColour"] 指的是我的 solidcolorbrush 资源,因为如果我在为它分配新颜色之前尝试访问它,我会得到一个空对象引用异常。

那么,我应该如何访问资源“themeColour”?

最佳答案

为了让您的代码正常工作,ResourceDictionary 必须在文件 App.xaml 中,其中 ResourceDictionary 应该是:

App.xaml

<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary/StyleDictionary.xaml"/>
<ResourceDictionary Source="Dictionary/ColorDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

代码隐藏

private void Window_ContentRendered(object sender, EventArgs e)
{
SolidColorBrush MyBrush = Brushes.Black;

Application.Current.Resources["themeColour"] = MyBrush;
}

为什么使用 App.xaml 更好

  • 正确地存储在此文件中的所有样式和资源字典,因为它是专门为此创建的 - 所有应用程序资源都可以从一个地方获得。它还可以很好地影响应用程序性能。

  • 在某些情况下,StaticResource 已被成功使用,但 DynamicResource 未成功使用(资源放置在 Window.Resources 中)。但是在 App.xaml 中移动资源后,一切都开始工作了。

关于c# - 如何在运行时更改 SolidColorBrush 资源的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21264222/

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