Как заставить несколько SolidColorBru sh ссылаться на один цвет в ResourceDictionary? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть "ResourceDictionary1.xaml" файл для управления цветами в "MainWindow.xaml" (предназначен для создания скинов), и он работает нормально.

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

Теперь, когда я хочу изменить цвет, мне нужно изменить его во всех ресурсах SolidColorBru sh. Поэтому я хочу связать все цвета SolidColorBru sh с одним ресурсом Color. Когда мне нужен полный контроль, я могу просто удалить привязку и указать другой цвет.

Поэтому я создал цветовой ресурс в файле ResourceDictionary. Но при попытке связать цвет ключ не отображается в intelliSense VisualStudio.

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:local="clr-namespace:WPFWindow.Skins"
                xmlns:sys="clr-namespace:System;assembly=mscorlib">


<Color x:Key="DarkH">#444444</Color>
<Color x:Key="DarkM">#555555</Color>
<Color x:Key="DarkL">#666666</Color>


<sys:String x:Key="TitleName">My App</sys:String>
<sys:Double x:Key="TitleBarHeight">32</sys:Double>
<SolidColorBrush x:Key="CicleMOut" Color="#aaaaaa"/>
<SolidColorBrush x:Key="CicleMOver" Color="#dddddd"/>
<Thickness  x:Key="CircleMargin">8</Thickness>
<SolidColorBrush x:Key="TitleBarMOut" Color="#555555"/>
<SolidColorBrush x:Key="TitleBarMOver" Color="#555555"/>
<SolidColorBrush x:Key="ExitMOut" Color="#555555"/>
<SolidColorBrush x:Key="ExitMOver" Color="#666666"/>
<SolidColorBrush x:Key="ExitCross" Color="#aaaaaa"/>
<Thickness  x:Key="CrossMargin">12</Thickness>
<sys:Double x:Key="CrossThickness">2</sys:Double>
<SolidColorBrush x:Key="MaxiMOut" Color="#555555"/>
<SolidColorBrush x:Key="MaxiMOver" Color="#666666"/>
<SolidColorBrush x:Key="MaxiBox" Color="#aaaaaa"/>
<Thickness  x:Key="BoxMargin">12</Thickness>
<sys:Double x:Key="BoxThickness">1</sys:Double>
<SolidColorBrush x:Key="MiniMOut" Color="#555555"/>
<SolidColorBrush x:Key="MiniMOver" Color="#666666"/>
<SolidColorBrush x:Key="MiniBar" Color="#aaaaaa"/>
<Thickness  x:Key="BarMargin">12</Thickness>
<sys:Double x:Key="BarThickness">1</sys:Double>
<SolidColorBrush x:Key="TitleBrs" Color="#aaaaaa"/>
<sys:Double x:Key="TitleFontSize">14</sys:Double>
<SolidColorBrush x:Key="FrmBdy" Color="#666666" />

Скажем, я хочу связать цвет SolidColorBru sh с цветом DarkH.

<SolidColorBrush x:Key="FrmBdy" Color="{Binding DarkH}" />

Это не работает. Я узнал, что связывание таким способом невозможно.

Тогда есть ли другой способ сделать так, чтобы несколько кистей относились к одному цвету?

Потому что, когда есть, скажем, 20 или более SolidColorBru sh, изменение цветов в каждом bru sh на один и тот же цвет звучит неэффективно и не может использовать один SolidColorBru sh по вышеуказанной причине гибкости.

Я новичок в WPF и перенесен из WinForms. Все еще пытаюсь сделать некоторые промежуточные вещи WPF. Спасибо.

1 Ответ

0 голосов
/ 30 марта 2020

Вы были близки

<SolidColorBrush x:Key="FrmBdy" Color="{StaticResource DarkH}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...