Как указать один ресурс (SolidColorBrush) на другой - PullRequest
27 голосов
/ 30 марта 2011

Я установил загрузку ресурсов SolidColorBrush и LinearGradientBrush в ResourceDictionary.Я использовал их, так как менял стиль управления несколькими элементами управления для нашего приложения.

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

Можно ли указать мои ресурсы кисти на новые ресурсы в другом словаре, что-то похожее на атрибут "BasedOn" в стилях?

Что-то вродеэто, по крайней мере, концептуально:

<SolidColorBrush x:Key="MyDataGridHeaderBrush" Binding="HeaderBrushDefinedElsewhere"/>

... или такого рода вещи невозможны, и в этом случае мне нужно просто пойти найти / заменить и заменить все имена моих кистей новой кистьюимена?

Заранее спасибо,

AT

Ответы [ 2 ]

37 голосов
/ 30 марта 2011

Я согласен с тем, что сказала Рэйчел, но если вам нужно основывать его на существующем SolidColorBrush, вы можете сделать это следующим образом:

<SolidColorBrush x:Key="MyDataGridHeaderBrush" 
                 Color="{Binding Source={StaticResource HeaderBrushDefinedElsewhere}, Path=Color}"/>

Обратите внимание, что это работает только для атрибута "Цвет", вам придется делать это отдельно для каждого необходимого атрибута.

10 голосов
/ 30 марта 2011

Обычно я создаю статическое свойство Color в одном месте, и мои кисти связываются с этим цветом.

<SolidColorBrush x:Key="LightColor" Color="#C5DBF6"/>
<SolidColorBrush x:Key="DarkColor" Color="#FF8DB2E3"/>

<LinearGradientBrush x:Key="FadeOutRight" EndPoint="1,1" StartPoint="0,0">
        <GradientStop Color="{Binding Source={StaticResource LightColor}, Path=Color}" Offset="0" />
        <GradientStop Color="{Binding Source={StaticResource DarkColor}, Path=Color}" Offset="1"/>
</LinearGradientBrush>

Вы также можете привязать другие цвета SolidBrush к этому:

<SolidColorBrush Color="{Binding Source={StaticResource LightColor}, Path=Color}" />

Если на это есть ссылка в другом файле, он может подчеркнуть его, потому что не может найти статический ресурс, но во время выполнения он все равно скомпилируется, если загружен ваш основной файл ресурса, содержащий ваши определения кисти.

...