2014-09-01 75 views
0

我想了解WPF並創建了一個WPF測試項目。我已經把monkey01.jpg圖像從項目的根目錄開始,在層次結構上移,至調試文件夾的每個文件夾中。在MainWindow上,我創建了Image並將源屬性定義爲指向monkey01.jpg,並且它在設計視圖中正確顯示。但是當我運行它時,圖像不會出現。xaml圖像在運行時不顯示,但在設計期間顯示(VB,wpf) - 爲什麼?

  • 如果我的圖像文件添加到項目資源,將運行時間預計期間顯示。 (但是,這是不是我測試這裏)
  • 如果XAML文件我寫的絕對路徑Source="C:\Users\User\Desktop\visual_studio_projects\WpfApplication1\monkey01.jpg它也將被顯示出來。
  • 但是,如果I(在下面的例子等)使用相對路徑,將不被顯示的圖像。就好像執行時一樣,程序不會在項目文件夾及其子文件夾內運行;相反,它運行在沒有訪問圖像的其他位置。爲什麼會這樣?我錯過了什麼?

這是MainWindow.xaml代碼:

<Window x:Class="MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Image x:Name="Thumbnailtest" Source="monkey01.jpg" /> 
    </Grid> 
</Window> 

謝謝!

+0

我甚至不能確定這是與Visual Studio中的XAML行爲或東西 – FotisK 2014-09-03 17:50:45

回答

0

你需要設置Copy to Output Directory在屬性窗口中的圖像「複製,如果新」。

+0

謝謝Postlagerkarte! - 雖然這不是我一直在嘗試理解的內容,但記住這絕對是一件有用的事情 - 我已經可以想到一些可能成爲救星的場景! – FotisK 2014-09-03 17:49:10

0

做工精細這裏的時候,我已經設置到資源的形象,不要複製,請注意我改變你的猴子形象.png格式和我創建了一個文件夾(數據/圖像)。

<Window x:Class="MasoneryLibrary.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:MasoneryLibrary;assembly=MasoneryLibrary" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <Grid> 
     <Image Source="Data/Images/monkey01.png" HorizontalAlignment="left" VerticalAlignment="Top" Width="290" Height="456" Margin="285,0,-58,-136" Stretch="None" StretchDirection="DownOnly"/> 
    </Grid> 
</Grid> 

Hmmmm ..這是一個圖書館嗎? 您應該使用URI packs以保證安全

隨着URI包:

<Image Source="pack://application:,,,/MasoneryLibrary;component/Data/Images/monkey01.png" HorizontalAlignment="left" VerticalAlignment="Top" Width="290" Height="456" Margin="285,0,-58,-136" Stretch="None" StretchDirection="DownOnly"/> 

希望它能幫助!

乾杯,

了Stian

+0

謝謝你了Stian你勾縫 - 對不起,如果我誤導大家,*砌體庫*參考僅僅是一個殘 - 我編輯的代碼要多給點,並增加了一些澄清的問題太! – FotisK 2014-09-03 17:33:02

+0

<圖像源=「包://應用:,,,/YOURAPPLICATION;組件/ monkey01。jpg「/>或你在上面的例子,在2013年工作得很好。圖像設置爲資源,而不是複製。我正在編碼C#。你在使用哪個版本的vs?編輯器比較麻煩。第三方的東西,可能會導致問題?任何代碼隱藏?我真的不知道,它應該工作得很好所以這一切都是猜測:) – 2014-09-03 18:21:49

+0

再次,謝謝你Stian;我使用VS2013(Express),例子是selfcontained - 只需打開VS,創建新的wpf項目並粘貼xaml代碼覆蓋現有的xaml代碼。但是,訣竅是*不*將圖像設置爲資源 - 我的意思是,如果我將它設置爲資源,它可以正常工作;但我的問題與*有關*如果我不將*設置爲資源會發生什麼:然後,它與絕對路徑一起工作,但不是相對路徑,這就是我的煩惱! – FotisK 2014-09-04 20:21:08