より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

WPFでウインドウにアイコンを指定する方法

私は、ちょっとしたツールでもアイコンを指定するようにしています。

大袈裟ですが、アイコンを設定することはアプリケーションに命を吹き込むようなことだと考えています。

WPFではよく失敗するので、メモです。

アプリケーションのアイコンを設定する

こちらについては問題ないと思います。WinFormsと同じようにプロジェクトファイルに設定します。

アイコンを設定すれば、自動的に指定したアイコンがプロジェクトフォルダ直下にコピーされます。

f:id:rimever:20190316164529p:plain

あとはビルドすればOKです。

f:id:rimever:20190317091536p:plain

Xamlでウインドウに指定する場合

アプリケーション自体のアイコンとWindowのアイコンは別々で管理しているので、ウインドウにはウインドウで指定することが必要です。

そうしないと、デフォルトのアイコンになってしまいます。

私がよくやるのはリソースファイルにアイコンを追加し、

f:id:rimever:20190316163658p:plain

Xaml

<Window
Icon="Resources/notebook.ico"
/>

と指定する方法ですが、これでは「System.Windows.Markup.XamlParseException」となってしまいます。

f:id:rimever:20190316164529p:plain

インテリセンスも効いて、なぜだと思うのですが、パス形式の指定です。

プロジェクトファイルから見えていても、exeファイルは別のフォルダに生成されるので、指定したアイコンファイルは見えなくなっているからです。

ただリソースに追加しただけでは、アイコンファイル自体のビルドアクションが「なし」になっています。これを「Resource」に変更します。

f:id:rimever:20190316165624p:plain

すると、いけます。

f:id:rimever:20190316170047p:plain