2013-11-26 78 views
1

爲了幫助我學習F#,我決定使用XAML提供程序將我的一個C#應用程序轉換爲F#。除了圖像資源之外,我只能對XAML進行最小限度的更改,就能夠獲得以前的所有功能。我有兩個窗口 - 每個窗口都使用窗口圖標。無論我如何嘗試,我似乎都無法讓應用程序加載所需的組件。設置XAML提供程序的圖標

的XAML:

<Window 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Totally An Application" Height="273" Width="425" Icon="Icon.ico" > 

如果我使用通常的圖標設置,XAML設計可以找到該文件,但是當我啓動應用程序,我得到:無法從文本創建一個「圖標」 'Icon.ico'。我也試過「pack:// application:,,,/Icon.ico」和「/Icon.ico」

該圖標在我的項目根目錄設置爲嵌入式資源,儘管我試過內容和資源只是爲了看看我是否可以讓錯誤信息改變。

我承認我在這裏沒有什麼元素,但​​我只想在窗口中看到一個圖標 - 當然必須有一個合適的方法來做到這一點。

+1

您的圖標應作爲資源包含在內,並且「複製到輸出目錄」選項設置爲「複製如果更新」。這樣你就可以確定圖標在編譯過程中會被複制。如果您的圖標位於另一個項目中,則需要應用pack://應用程序混亂...... –

+0

這似乎是FSharpX的XAML Provider中的一個缺陷。我已經發布了一個關於他們的GitHub的bug報告(https://github.com/fsharp/fsharpx/issues/273)。我會用我得到的回覆更新這個問題。 – ChargerIIC

回答

1

WPF資源必須與生成操作Resource進行設置,而不是像Embedded Resource在Windows的情況下窗體

+0

我試過資源,問題仍在繼續。奇怪的部分是,當我使用C#時,這工作。 – ChargerIIC

+0

資源是否在同一個程序集中?如果在創建窗口之前不嘗試在該程序集上執行顯式的Assembly.Load。 –

+0

資源在同一個程序集中。我開始懷疑這可能與Type Provider有關。我曾希望避免使用資源,因爲這曾經是一個單一的.exe應用程序,但如果這是需要的,我可能必須使用Resource。 – ChargerIIC