Псевдоним или ссылка в ResourceDictionary - PullRequest
2 голосов
/ 27 апреля 2011

Я ищу способ по существу дать элемент в ResourceDictionary нескольких клавиш. Есть ли способ сделать это?

<DataTemplate x:Key="myTemplate" ... />
<AliasedResource x:Key="myTemplateViaAlias" Target="myTemplate" OR_Target={StaticResource myTemplate} />

Когда я звоню TryFindResource("myTemplateViaAlias"), я хочу получить myTemplate. Я полагаю, что мог бы сам создать класс AliasedResource и разыменовать его в коде, когда вытащу его из словаря, но я бы не стал этого делать, если есть встроенный способ.

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

Вы можете передавать ресурсы через динамические ресурсы (обратите внимание, что дрянным дизайнерам пользовательского интерфейса это не понравится)

<Color x:Key="color">Red</Color>
<DynamicResource x:Key="mycolor" ResourceKey="color"/>
<Rectangle Width="100" Height="100">
    <Rectangle.Fill>
        <SolidColorBrush Color="{StaticResource color}"/>
    </Rectangle.Fill>
</Rectangle>
<Rectangle Width="100" Height="100">
    <Rectangle.Fill>
        <SolidColorBrush Color="{StaticResource mycolor}"/>
    </Rectangle.Fill>
</Rectangle>
0 голосов
/ 27 апреля 2011

Я не знаю, как это сделать.

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

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

...