2014-04-19 55 views
5

我有一個WPF類庫,包含一個文件夾「圖像」,其中包含一個圖像。 在使用使用正確的包:// URI格式

<Image Name="image" Grid.Row="0" Source="pack://application:,,,/ImageService.dll;Component/Images/image.jpg"/> 

的圖像Ist WPF應用程序我不會來指代圖像在該文件夾標記爲「的ressource」,我也把它添加到類庫項目的資源。經過一番搜索後,我發現,我必須將dll複製到exe目錄中。

在設計時,圖像顯示正確。啓動可執行文件後,圖像的source屬性爲空。輸出窗口中沒有錯誤消息和提示。

看來,pack uri的格式不正確,所以運行時指向了一個錯誤的地方。有沒有一種方法可以使用「.... \ AssemblyName.dll」或絕對文件系統根目錄來指定相對於可執行文件的程序集名稱。

不幸的是,我不能通過代碼分配圖像源,因爲所有內容都通過XAMLWriter-XAMLReader構造從dll到正在執行的程序集。

任何幫助apreciated,

在此先感謝

回答

6

您不必圖像複製到輸出目錄。請務必標註Build ActionResource並設置Copy to Output Directoryfalse

另外,如果XAML和圖像駐留在相同的程序集中,則可以跳過程序包URI中的程序集名稱。如果它們駐留在不同的程序集中,則必須僅給出程序集名稱(從路徑中刪除dll)。

<Image Source="pack://application:,,,/ImageService;Component/Images/image.jpg"/> 
+0

謝謝!從路徑中刪除dll工作。 但只有當dll與可執行文件在同一個文件夾中時纔有效。我必須引用位於其他位置的dll中的圖像。在 [PROJECTFOLDER] \的ImageConsumer \ BIN \調試 包含圖像的組件駐留在 [PROJECTFOLDER] \ ImageService \ BIN \調試 所以我需要像」 .. \ .. \執行的程序集rresides .. \ ImageService \ BIN \調試\ ImageService.dll」。 –

+0

太好了。很高興幫助.. –

+0

但只有當dll與可執行文件在同一個文件夾中時。我必須引用位於其他位置的dll中的圖像。在 [PROJECTFOLDER] \的ImageConsumer \ BIN \調試 包含圖像的組件駐留在 [PROJECTFOLDER] \ ImageService \ BIN \調試 所以我需要像」 .. \ .. \執行的程序集rresides .. \ ImageService \ BIN \調試\ ImageService.dll」。或絕對路徑。 是這樣的可能嗎? –