如何将一个资源颜色值(从ResourceKey)设置为另一个(SolidColorBrush)
本文关键字:ResourceKey 设置 SolidColorBrush 另一个 颜色值 一个 资源 | 更新日期: 2023-09-27 17:58:49
我想将新颜色设置为Application。现在的资源["MainColor"]。我可以这样做:申请。现在的Resources["MainBackgroundColor"]=new SolidColorBrush(color);但我希望这个颜色来自Infrasgistics。Windows。带子RibbonBrushKeys
所以我想将值设置为:
Application.Current.Resources["MainColor"]
其定义为:
<SolidColorBrush x:Key="MainColor" Color="#FFEAF2FB" />
表单Infrastics功能区资源:
public static readonly ResourceKey RibbonGroupCollapsedNormalBorderDarkFillKey;
在XAML中,我会这样做:
<Setter Property="BorderBrush" TargetName="border1" Value="{DynamicResource {x:Static igRibbon:RibbonBrushKeys.RibbonGroupCollapsedNormalBorderDarkFillKey}}"/>
但我需要在C#代码后台执行。
我试过这样的东西:
Application.Current.Resources["MainColor"] = Infragistics.Windows.Ribbon.RibbonBrushKeys["RibbonGroupCollapsedNormalBorderDarkFillKey"];
但它没有起作用。我希望从RibbonGroupCollapsedNormalBorderMarkFillKey中获取颜色值。
我也试过这个:
Application.Current.Resources["MainColor"] = Application.Current.Resources["Infragistics.Windows.Ribbon.RibbonBrushKeys.RibbonGroupCollapsedNormalBorderDarkFillKey"];
我以为它会改变颜色,它编译了,但当我点击这个按钮时,它什么都没改变。。。
非常感谢这里的任何帮助!
RibbonGroupCollapsedNormalBorderDarkFillKey
是键,而不是画笔。画笔在资源字典中。你用钥匙取回它。
考虑到这一点,并且考虑到您期望FindResource("MainColor")
返回画笔而不是颜色,这应该是可行的:
Application.Current.Resources["MainColor"] = FindResource(
Ribbon.RibbonGroupCollapsedNormalBorderDarkFillKey);
Application.Current.Resources["MainColor"] = ...
将对象存储在键"MainColor"
中,如果该键已经存在。要使用该键添加新资源,请使用Resources.Add(key,object)
。
应该是这样的:
Application.Current.Resources.Add("MainColor", Infragistics.Windows.Ribbon.RibbonBrushKeys["RibbonGroupCollapsedNormalBorderDarkFillKey"]);
编辑:由于您的资源显然确实存在,这是一个铸造的问题
(Application.Current.Resources["MainColor"] as SolidColorBrush).Color =
(Infragistics.Windows.Ribbon.RibbonBrushKeys[Infragistics.Windows.Ribbon.RibbonGroupCollapsedNormalBorderDarkFillKey] as SolidColorBrush).Color;
XAML指向资源层次结构中使用的键,这取决于您要添加该键的位置(即代码上下文)以及原始键的定义位置,您可能能够通过FindResource
:获得颜色
(Application.Current.Resources["MainColor"] as SolidColorBrush).Color =
(FindResource(Infragistics.Windows.Ribbon.RibbonGroupCollapsedNormalBorderDarkFillKey) as SolidColorBrush).Color;
或者,您可以用从其他资源加载颜色的新画笔覆盖整个画笔。请注意,在这两种情况下,此更改都是通过值执行的,如果其中一个资源发生更改,则另一个资源不会受到的影响。