2009-02-23 12 views
8

Come posso creare un UserControl in WPF con uno stile di base predefinito, ma può anche essere facilmente utilizzato quando necessario?Comandi utente Themable in WPF

Avete alcune buone linee guida, post di blog o esempi che spiegano questo argomento specifico?

Grazie in anticipo, Marco

risposta

7

In temi WPF sono semplicemente un insieme di file XAML ciascuno contenente un ResourceDictionary che detiene la stile e Template definizioni che si applicano ai controlli utilizzati nell'applicazione. Un file del tema potrebbe essere la seguente:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:uc="clr-namespace:MyApp.UserControls"> 

    <!-- Standard look for MyUserControl --> 
    <Style x:Key="Standard" TargetType="{x:Type uc:MyUserControl}"> 
    <Setter Property="Width" Value="22" /> 
    <Setter Property="Height" Value="10" /> 
    </Style> 

</ResourceDictionary> 

supporto per i temi in un'applicazione WPF deve essere esplicitamente abilitata aggiungendo il seguente attributo al gruppo:

[assembly: ThemeInfo(
    ResourceDictionary.None, 
    ResourceDictionaryLocation.SourceAssembly 
)] 

Questo indicherà WPF per cercare un file della risorsa incorporata denominato temi \ generic.xaml per determinare l'aspetto predefinito dei controlli dell'applicazione.

notare che quando il dizionari specifici del tema sono contenuti file separati di assemblaggio, stile e modello di risorse dell'applicazione deve utilizzare un composito chiave, che racconta WPF che assieme contiene il controllo che lo stile/modello è applicabile a . Così l'esempio precedente deve essere modificato per:?.

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:uc="clr-namespace:MyApp.UserControls;assembly=MyApp"> 

    <!-- Standard look for MyUserControl in the MyApp assembly --> 
    <Style x:Key="{ComponentResourceKey {x:Type uc:MyUserControl}, Standard}"> 
    <Setter Property="Width" Value="22" /> 
    <Setter Property="Height" Value="10" /> 
    </Style> 

</ResourceDictionary> 
+0

il "buon esempio" collegamento è morto –

+0

@SvenHecht Grazie per la segnalazione ho rimosso il riferimento link morto . –

Problemi correlati