Frage

Ich habe benutzerdefinierte benannte Stile auf die app.xaml.

Ich habe einen externen Ressource-Wörterbuch (die ich in den fusionierten Wörterbücher des app.xaml beilegen) und wenn ich versuche, eine der oben genannten Stile im rcource Wörterbuch zu verwenden, heißt es, dass es keine solche Art ist.

Auch die Standard-Stile (d unbenannte Arten, die für die gesamte Anwendung gelten) gelten nicht für die Schablonenelemente.

Hinweis: Die Build-Aktion der Vorlagen ist 'Seite'

.

Hier ist ein Beispiel dafür, wie mein Code geschrieben ist:

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

Dies ist ein Beispiel der Datenvorlage:

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

Irgendwelche Ideen? Muss ich die Wörterbücher in einer anderen Art und Weise zusammenführen?

War es hilfreich?

Lösung

Der Code nicht gut funktionieren wird, weil das Datatemplate im Ressourcenverzeichnis nicht weiß, welche man es verwenden, ist es nur war verwendet. Wie Hollywood-Modus. Sie zusammengestellt getrennt.

Um diese Arbeit zu machen, können Sie Ihren Stil setzen, die in app.xaml in dem gleichen Ressourcenverzeichnis der Datatemplate oder wenn Sie diese Kopplung nicht mögen, können Sie setzen es in einem anderen Ressource-Wörterbuch, und verschmelzen sie in die Ressource Wörterbuch der Datatemplate .

Andere Tipps

Die Build Action für Ihre App.xaml Application sein sollte, und die Build-Aktion für Ressourcen-Wörterbuch-Dateien sollte Seite sein. Ich vermute, Sie beide von denen haben korrekt, weil sie sind standardmäßig (und ich sehe, dass Sie Seite bereits erwähnt).

Ich kann mich an jedem anderen Problem mit Ihrer Situation. Solange Ihre statischen Ressourcen in der richtigen Reihenfolge festgelegt sind, die sie zu sein scheinen, sollte es in der Lage sein, sie zu finden, wenn Sie Ihre Anwendung ausführen.

Bearbeiten

Debuggen Idee: Erstellen Sie eine neue Ressource-Wörterbuch „TestDictionary.xaml“ mit einem einfachen Tastenstil bezeichnet. Stellen Sie sicher, dass das Wörterbuch im selben Ordner wie die anderen Wörterbuch ist (DataTemplate1.xaml, etc.). Setzen Sie einen Link auf nur TestDictionary in MergedDictionaries (kommentieren Sie die anderen aus). Legen Sie eine Taste auf dem Startfenster und wenden Sie den Stil. Sehen Sie, wenn nur das funktioniert. Wenn es fehlschlägt, wissen Sie, Sie ein Problem mit Ihrem merge haben. Wenn es gelingt, etwas über Ihre DataTemplate könnte das Problem sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top