Как установить одно значение цвета ресурса (из ResourceKey) в другое (SolidColorBrush) - PullRequest
0 голосов
/ 10 июня 2011

Я хочу установить новый цвет для 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" />

form Инфраструктура Ресурсы ленты:

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"];

Но это не сработало.Я исключил, чтобы получить значение цвета из RibbonGroupCollapsedNormalBorderDarkFillKey.

Я также попробовал это:

Application.Current.Resources["MainColor"] = Application.Current.Resources["Infragistics.Windows.Ribbon.RibbonBrushKeys.RibbonGroupCollapsedNormalBorderDarkFillKey"];

Я думал, что это изменит цвета, он скомпилирован, но когда я нажимал кнопку с этим действием, он ничего не менял...

Любая помощь здесь очень ценится!

Ответы [ 2 ]

3 голосов
/ 11 июня 2011

RibbonGroupCollapsedNormalBorderDarkFillKey - это клавиша , а не кисть. Кисть находится в словаре ресурсов. Вы используете ключ, чтобы получить его.

Учитывая это и ожидая, что FindResource("MainColor") вернет кисть, а не цвет, это должно работать:

Application.Current.Resources["MainColor"] = FindResource(
   Ribbon.RibbonGroupCollapsedNormalBorderDarkFillKey);
1 голос
/ 10 июня 2011

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;

В качестве альтернативы вы можете перезаписать всю кисть новой, которая загружает ее цвет из вашего другого ресурса.Обратите внимание, что в обоих случаях это изменение выполняется по значению , если один из ресурсов изменяется, другой не затронут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...