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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top