Псевдоним или ссылка в ResourceDictionary

Я ищу способ по существу дать предмет в ResourceDictionary несколько ключей. Есть ли способ сделать это?

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

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

2 ответа

Решение

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

<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>

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

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

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

Другие вопросы по тегам