"Präfix 'x' wird keinem Namespace zugeordnet"

8

Ich möchte ein DataTemplate zur Laufzeit mit XamlReader laden, aber es wirft die Ausnahme "Prefix 'x' wird keinem Namespace zugeordnet."

Dies ist die XML-Zeichenfolge, die ich an XamlReader :

übergebe %Vor%

Dies ist der Code, der es liest:

%Vor%

Hier ist der lustige Teil, wenn ich x:Key="ValidationResponseTemplate" zu der DataTemplate hinzufüge, die ohne irgendwelche Ausnahmen analysiert wird. Ich kann es jedoch nicht so behalten, weil ich das DataTemplate nicht per Schlüssel in der eigenen .xaml angeben kann (es wird nichts über die Vorlage wissen, bis sie zur Laufzeit abgerufen wird).

Der Namespace x ist sowohl im programmeigenen .xaml als auch im Fragment von XML definiert, das ich analysieren möchte.

Gesamtziel: In der Lage sein, neue DataTemplates bereitzustellen, um das Aussehen der Anzeige zur Laufzeit zu ändern und XML-Daten anzuzeigen, die der Client zur Kompilierungszeit nicht kannte.

    
C. Lawrence Wenham 12.04.2011, 20:56
quelle

1 Antwort

3

Es wurde ein Umweg gefunden: Anstatt XamlReader eine Zeichenkette analysieren zu lassen, funktionierte es besser, wenn ich ihr XmlReader gab. Das XML-Fragment mit der darin definierten DataTemplate war Teil eines größeren XML-Dokuments, in dem alle Namespaces im Stammverzeichnis definiert waren. Dies wurde bereits in ein XDocument gelesen, und von dem ich das XElement mit dem darin definierten ResourceDictionary genommen hätte. Der neue Code, Teil von MainWindow.xaml.cs , sieht so aus:

%Vor%

Dies hat eine andere Ausnahme ausgelöst, bei der der Typ von (http://myschemas/MyProfile)Binding nicht aufgelöst werden konnte. Es stellt sich heraus, dass Sie die Namespaces von alles , einschließlich der {Binding ...} Referenzen, qualifizieren müssen. Daher musste das XML-Fragment wie folgt geändert werden:

%Vor%

Nun wusste XamlParser, dass Binding ein Typ im Namensraum "http: //schemas.microsoft.com ..." war.

    
C. Lawrence Wenham 12.04.2011, 21:25
quelle

Tags und Links