xClassNotDerivedFromElement-Fehler beim Hinzufügen von Code Behind zum Ressourcenwörterbuch in Silverlight

8

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.

    
PanJanek 30.07.2010, 10:37
quelle

3 Antworten

6

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.

    
Wolf Schmidt-MSFT 25.10.2010, 22:30
quelle
5

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%     
Pavel Korsukov 27.08.2012 14:31
quelle
0

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.

    
Martin Lottering 22.11.2012 09:41
quelle