mir ist die Frage echt peinlich, aber nachdem ich jetzt schon seit Tagen (nicht am Stück) daran herumbastel und ich vermutlich schon drei mal an der Lösung vorbeigeschrammt bin, muss ich einfach hier fragen.
Ich habe eine Klassenbibliothek in der ich eine XML-Datei mit Daten z.B. für Comboboxen habe. Diese möchte ich direkt in WPF, ohne Code Behind, ansprechen. Mein derzeitiger Versuch sieht grob so aus:
Die Datei Data.xml liegt logischerweise innerhalb der Klassenbibliothek im Ordner "Resources". Ich habe schon alle möglichen Kombinationen von "Embedded Resource", "Resouce" und "Content" mit und ohne kopieren versucht. Ohne Erfolg.
Es kommt im Debug-Fenster immer die Meldung, das die Datei nicht gefunden werden konnte. Die Data.xml mit in die aufrufende Exe aufzunehmen ist in diesem Fall keine Lösung für mich. Und im idealfall würde ich sie gerne als "Embedded Resource" verwenden, anstatt die Datei physisch auf der HDD zu haben (es sei denn, jemand fällt da ein guter Grund ein, weshalb man gerade so nicht vorgehen sollte).
Bitte um kurze Hilfestellung. Ich denke, da überschneiden sich zwei Fehler und ich habe nur ein wenig Pech mit Trial-and-Error. Sämtliche Webseiten beziehen sich nur auf Executables und nie auf ClassLibraries.
Ohne das jetzt nachgestellt und ausprobiert zu haben: Kann es sein, dass du bei der Pack-Uri einfach statt .xml .xaml geschrieben hast und es deswegen nicht funktioniert? Am einfachsten ist es wahrscheinlich, wenn du eine Pack-Uri in Verbindung mit einer in die Assembly kompilierten Resource verwendest.
Argh.... ja, vermutlich. Ich bin mit zwar zu 100% sicher, das ich xaml auch auf xml korrigiert habe (denn das oben war ein C&P aus dem Web, nicht aus meinem Code) aber vermutlich eben erst etwas später, nachdem ich den Buildvorgang für die Data.xml umgestellt hatte. Das meinte ich mit 2 Fehlern :)
Also es funktioniert nun, wenn ich die XML-Datei als "Ressource" einstelle. Kannst Du mir sagen, weshalb das nicht auch als "Eingebettete Ressource" funktioniert?
Soweit ich das verstanden habe verwendet man die Pack-Uri mit Resourcen, diese werden bei WPF als ApplicationResources in die Assembly mit einkompiliert. EmbeddedResources sollten über einen ResourceManager "angesprochen" werden (so wie Satellite-Assemblies in WinForms oder in manchen WPF Lokalisierungsprojekten angesprochen werden).
Siehe hier: http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/29b6d203-18fb-40b0-a01f-d5b787ccf3be und http://msdn.microsoft.com/en-us/library/aa970494.aspx
Vielen Dank. Dort ist noch ein weiterführender Link enthalten, der Embedded und normale Ressourcen gegenüberstellt. Schaue ich mir gleich bei einem frischen Kaffee an und bessere meine Wissenslücken auf.
Also es funktioniert nun, wenn ich die XML-Datei als "Ressource" einstelle. Kannst Du mir sagen, weshalb das nicht auch als "Eingebettete Ressource" funktioniert?