Domanda

Ho aggiunto stili di nome personalizzato alla App.xaml.

ho creato un dizionario risorsa esterna (che allego nei dizionari unite della App.xaml) e quando cerco di usare uno dei suddetti stili nominati nel dizionario rcource, si dice che non v'è tale stile.

Anche gli stili di default (cioè stili senza nome che si applicano per l'intera applicazione) non si applicano sugli elementi del modello.

Nota: L'azione di costruzione dei modelli è 'Pagina'

.

Ecco un esempio di come il mio codice è scritto:

<Application x:Class="Application"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    
    ShutdownMode="OnExplicitShutdown">
    <Application.Resources>
        <ResourceDictionary>

            <Style
                    x:Key="StackPanelStyle" 
                    TargetType="StackPanel" 
                    BasedOn="{StaticResource {x:Type StackPanel}}">
                <Setter Property="Margin" Value="5"/>
                <Setter Property="Orientation" Value="Horizontal" />
                <Setter Property="Height" Value="40"/>
            </Style>

            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Templates/DataTemplate1.xaml"/>
                <ResourceDictionary Source="/Templates/DataTemplate2.xaml"/>
                <ResourceDictionary Source="/Templates/DataTemplate3.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Questo un esempio del modello di dati:

<DataTemplate DataType="{x:Type Entity}" x:Key="NameDataTemplate">
    <Expander>
        <StackPanel>
            <--The following line produces: StackPanelStyle was not found.-->
            <StackPanel Style="{StaticResource StackPanelStyle}">
                <Label Content="Name:"/>
                <TextBox Text="{Binding Name}"/>
            </StackPanel>
        </StackPanel>
    </Expander>
</DataTemplate>

Tutte le idee? Devo unire i dizionari in un modo diverso?

È stato utile?

Soluzione

Il codice non funziona bene perché il DataTemplate nel dizionario risorse non sa quale lo sta utilizzando, semplicemente stato utilizzato. Come modalità di Hollywood. Hanno compilato separatamente.

Per fare questo lavoro, si può mettere il vostro stile che a app.xaml nello stesso dizionario risorse del DataTemplate o se non ti piace questo accoppiamento, è possibile metterlo in un dizionario risorse diverso, e fondersi in dizionario risorse del DataTemplate .

Altri suggerimenti

L'azione Costruire per il vostro App.xaml dovrebbe essere ApplicationDefinition, e l'azione di costruzione per i file di dizionario risorse dovrebbe essere pagina. Sto indovinando si dispone sia di quelli corretti, perché sono di default (e vedo che lei ha citato su Pagina già).

Non riesco a pensare a nessun altro problema con la vostra situazione. Fino a quando le risorse statiche sono definite nell'ordine corretto, che sembrano essere, dovrebbe essere in grado di trovarli quando si esegue l'applicazione.

Modifica

Debug idea: creare un dizionario risorse fresco chiamato "TestDictionary.xaml" con uno stile semplice tasto. Assicurarsi che questo dizionario è nella stessa cartella del altri dizionari (DataTemplate1.xaml, etc.). Mettere un link al solo TestDictionary in MergedDictionaries (commentare le altre). Mettere un pulsante sul periodo di avvio e applicare lo stile. Vedere se solo funziona. Se fallisce, sai di avere un problema con la stampa. Se ci riesce, qualcosa circa il vostro DataTemplate potrebbe essere il problema.

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