Domanda

Ho un po 'di XAML per disegnare un logo e voglio riutilizzarlo in vari altri file XAML (non ha interfaccia utente e non richiede codice). Il livello superiore del logo XAML è un Canvas elemento.

Per utilizzare il logo in altri file XAML è meglio definire questo logo come elemento in a ResourceDictionary o creare un UserControl?

Questo sembra facile con a UserControl, tuttavia, voglio caricare i miei file XAML con XamlReader in modo da preferire utilizzare le risorse in modo che queste possano essere specificate all'interno di XAML. Sembra possibile archiviare articoli come a Canvas in un ResourceDictionary Ma non sono sicuro di come fare riferimento a loro.

Ad esempio, posso definire il mio logo come a ResourceDictionary elemento come segue:

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

Ma come posso usarlo Logo Nei miei altri file XAML - forse ho avuto l'idea sbagliata sulle risorse?

È stato utile?

Soluzione

Ho scoperto che la soluzione è un visualbrush. Posso definirlo nel risorse come segue:

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

Quindi usa questo visualbrush ove necessario.

Altri suggerimenti

In genere, se vuoi creare un dizionario delle risorse per questo, faresti uno stile. Potresti quindi abbandonare un controllo e modellarlo con la tua risorsa, in qualsiasi altro file XAML che desideravi.

Tuttavia, un UserControl sarebbe potenzialmente un'opzione più semplice, poiché sarebbe un elemento semplice e riutilizzabile in cui si potrebbe cadere ovunque.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top