Элемент ResourceDictionary или UserControl? - PullRequest
0 голосов
/ 12 января 2010

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

Чтобы использовать логотип в других файлах XAML, лучше всего определить этот логотип как элемент в ResourceDictionary или создать UserControl?

Это кажется простым с UserControl, однако я хочу загрузить свои файлы XAML в XamlReader, поэтому я бы предпочел использовать ресурсы, чтобы их можно было указывать в XAML. Кажется возможным хранить такие элементы, как Canvas в ResourceDictionary, но я не уверен, как на них ссылаться.

Например, я могу определить свой логотип как элемент ResourceDictionary следующим образом:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Canvas x:Name="LayoutRoot" x:Key="Logo">
        <!-- My Logo -->
    </Canvas>
</ResourceDictionary>

Но как я могу использовать это Logo в моих других файлах XAML - может быть, я неправильно понял ресурсы?

Ответы [ 2 ]

1 голос
/ 12 января 2010

Я нашел решение VisualBrush. Я могу определить это в ResourceDictionary следующим образом:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<VisualBrush x:Key="Logo">
    <VisualBrush.Visual>
<Canvas x:Name="LayoutRoot" x:Key="Logo"> 
               <!-- My Logo --> 
             </Canvas> 

Тогда просто используйте этот VisualBrush, где это необходимо.

0 голосов
/ 12 января 2010

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

Однако UserControl потенциально может быть проще, так как это будет простой, многократно используемый элемент, который вы можете вставить куда угодно.

...