Elemento de Recursos ou UserControl?
-
20-09-2019 - |
Pergunta
Eu tenho algum XAML para desenhar um logotipo e quero reutilizar isso em vários outros arquivos XAML (não possui interface do usuário e não requer código). O nível superior do logotipo xaml é um Canvas
item.
Para usar o logotipo em outros arquivos XAML, é melhor definir este logotipo como um elemento em um ResourceDictionary
ou crie a UserControl
?
Isso parece fácil com um UserControl
, no entanto, eu quero carregar meus arquivos XAML com o XamlReader, para que eu prefiro usar os recursos para que eles possam ser especificados no XAML. Parece possível armazenar itens como um Canvas
em um ResourceDictionary
Mas não tenho certeza de como fazer referência a eles.
Por exemplo, posso definir meu logotipo como um ResourceDictionary
Elemento da seguinte forma:
<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>
Mas como posso usar isso Logo
Nos meus outros arquivos XAML - talvez eu tenha tido a ideia errada sobre os recursos?
Solução
Eu achei que a solução é um visualbrush. Eu posso definir isso no recurso da seguinte maneira:
<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>
Em seguida, basta usar este visualbrush quando necessário.
Outras dicas
Normalmente, se você deseja fazer um dicionário de recursos para isso, fará um estilo. Você pode soltar um controle e estilizá -lo com seu recurso, em qualquer outro arquivo XAML que desejasse.
No entanto, um UserControl seria potencialmente uma opção mais fácil, pois seria um elemento simples e reutilizável que você poderia cair em qualquer lugar.