Ich muss dem Resource Dictionary Code hinter der Klasse hinzufügen, wie in diese Frage . (Ich weiß, dass dies keine gute Übung ist, aber es sollte basierend auf den Kommentaren für die verknüpfte Frage funktionieren.) Ich verweise auf den Code mit dem x: Class-Attribut:
XAML (separate Ressourcenwörterbuchdatei):
%Vor%CODE:
%Vor%Das verursacht die Laufzeitparser-Ausnahme:
Interner Parserfehler: Objektverfasser ' xClassNotDerivedFromElement '. [Linie: xxx Position: xxx] bei System.Windows.Application.LoadComponent.
Die Ressourcen sind in App.xaml mit dem ResourceDictionary.MergedDictionaries-Tag enthalten.
Versuchen Sie, dieses ResourceDictionary als Quellwert eines zusammengeführten Wörterbuchs zu verwenden? Wenn dies der Fall ist, wird dies nicht unterstützt. Sie erhalten den xClassNotDerivedFromElement-Fehler, der eine seltsame Art ist, ihn anzuzeigen, aber hier ist der Grund: Der Source-Attributwert wird so übersetzt, dass er XAML als XAML und nicht als Klasse referenziert. Der XAML-Parser öffnet dieses XAML als reine Ladeaktion ohne Vorkompilierung und kann die x: -Klasse zu diesem Zeitpunkt nicht abgleichen.
Die Klasse "x:" ist für zusammengesetzte Wörterbücher in App.xaml eingeschränkt. Stattdessen sollten Sie Ihre in den App-Ressourcen als Code definierte Klasse verwenden:
%Vor%Es ist schade, dass das Erstellen des Code-Behind für ein Ressourcenwörterbuch nun bedeutet, dass Sie kein ResourceDictionary mit dem URI für das XAML erstellen können.
Ich habe meinen Code-Behind wieder entfernt, aber das ResourceDictionary immer noch in Code erstellt, indem ich die Antwort aus dieser Frage + und + Antwort
Im Grunde erstellt es nur eine leere ResourceDictionary
und setzt seine Source
auf die xaml uri im Code.
Für mich funktionierte das besser, weil es dann bedeutet, dass noch jemand das Ressourcenwörterbuch referenzieren kann, wenn er es möchte, und zwar auf die erwartete Weise.
Tags und Links .net silverlight xaml resourcedictionary code-behind