我想为Application.Current.Resources [“MainColor”]设置新颜色。我可以这样做:Application.Current.Resources [“MainBackgroundColor”] = new SolidColorBrush(color);但我希望这种颜色来自Infragistics.Windows.Ribbon.RibbonBrushKeys
所以我想将值设置为:
Application.Current.Resources["MainColor"]
定义为:
<SolidColorBrush x:Key="MainColor" Color="#FFEAF2FB" />
表格Infragistics Ribbon资源:
public static readonly ResourceKey RibbonGroupCollapsedNormalBorderDarkFillKey;
在XAML中我会这样做:
<Setter Property="BorderBrush" TargetName="border1" Value="{DynamicResource {x:Static igRibbon:RibbonBrushKeys.RibbonGroupCollapsedNormalBorderDarkFillKey}}"/>
但我需要在C#codebehind中完成。
我尝试过类似的事情:
Application.Current.Resources["MainColor"] = Infragistics.Windows.Ribbon.RibbonBrushKeys["RibbonGroupCollapsedNormalBorderDarkFillKey"];
但它没有用。我除了从RibbonGroupCollapsedNormalBorderDarkFillKey获取颜色值。
我也试过这个:
Application.Current.Resources["MainColor"] = Application.Current.Resources["Infragistics.Windows.Ribbon.RibbonBrushKeys.RibbonGroupCollapsedNormalBorderDarkFillKey"];
我认为它会改变颜色,它会被编译,但是当我点击这个动作的按钮时它什么也没改变......
这里的任何帮助都非常感谢!
答案 0 :(得分:3)
RibbonGroupCollapsedNormalBorderDarkFillKey
是键,而不是画笔。画笔位于资源字典中。您可以使用该键来检索它。
鉴于此,鉴于您期望FindResource("MainColor")
返回画笔而不是颜色,这应该有效:
Application.Current.Resources["MainColor"] = FindResource(
Ribbon.RibbonGroupCollapsedNormalBorderDarkFillKey);
答案 1 :(得分:1)
Application.Current.Resources["MainColor"] = ...
将您的对象存储在密钥"MainColor"
中,如果该密钥已存在那么。要使用该密钥添加新资源,请使用Resources.Add(key,object)
。
应该是这样的:
Application.Current.Resources.Add("MainColor", Infragistics.Windows.Ribbon.RibbonBrushKeys["RibbonGroupCollapsedNormalBorderDarkFillKey"]);
修改:由于您的资源显然存在,因此casting
(Application.Current.Resources["MainColor"] as SolidColorBrush).Color =
(Infragistics.Windows.Ribbon.RibbonBrushKeys[Infragistics.Windows.Ribbon.RibbonGroupCollapsedNormalBorderDarkFillKey] as SolidColorBrush).Color;
您XAML指向资源层次结构中使用的密钥,具体取决于您要添加该密钥的位置(即代码上下文)以及定义原始密钥的位置,您可以通过{{1 }}:
FindResource
或者,您可以使用从其他资源加载颜色的新画笔覆盖整个画笔。请注意,在这两种情况下,此更改均按按值完成,如果任一资源发生更改,则 受影响。