◆ Window の Icon プロパティにパス指定
◆ App.xaml のリソースで設定して Window は Style でリソース読み込みのほうが修正が簡単
◆ exe 自体も変えるならプロパティのプロパティでパス指定
  ◆ ico ファイルのみ
◆ exe のアイコンが Window で Icon 未指定の場合のデフォルト

これまでは特別気にしてなかったのですが いくつかアプリケーションを開いたりデスクトップにショートカットを並べたりしていて 全部デフォルトアイコンってわかりづらいな って思ったのでアイコンを指定してみます

これ

wpf-noicon

ちなみに このウィンドウのタイトル左にあるアイコンは WPF のプロパティでは非表示にできません
WindowsForms だとプロパティで簡単にできたのですが WPF は透明化とかも含めてウィンドウ自体のカスタマイズは弱めです

やること自体は不可能ではなくて user32.dll をインポートして Win32API を使って非表示にはできます
ちょっと面倒なので 左側に隙間開くことが嫌じゃないなら 透明アイコンにしてしまう手もあります

アイコンを変える

単純にウィンドウのアイコンを変えるのなら XAML の Window の Icon プロパティにアイコンファイルのパスを書けば変わります
プロジェクトのルートに image フォルダを作ってその中に icon.png をおいてる場合に

<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="300" Width="400"
Icon="/image/icon.png">
<Grid>
<Button Width="200" Height="200">Button</Button>
</Grid>
</Window>

とすればその画像が設定されます

wpf-icon1


なんか画質がイマイチです
元画像↓

icon

全部に書くの大変

Window がいっぱいあると全部の Window にアイコンを書くのって大変です
画像を変えてパスが変わると全部書き直しです

なのでリソースにまとめてみます

App.xaml の Application.Resouces にスタイルを設定します

    <Application.Resources>
<Style x:Key="window_common" TargetType="Window">
<Setter Property="Icon" Value="/image/icon.png"/>
</Style>
</Application.Resources>

window_common というキーを設定しました
これを各 Window のスタイルで指定します
Icon はスタイル側で指定しているので削除します

        Title="MainWindow" Height="300" Width="400"
Style="{StaticResource window_common}">

今回は Icon だけですが window_common にいろいろ設定すればその Style を使う Window 全部に適用できます
Icon の代わりに Style を書かないといけないので 単純なコードの量的には対して変わりませんが 修正しやすくなったのが利点です

exe のアイコンも変える

今までの方法だと ウィンドウのアイコンを設定しています
なので ウィンドウ左上のアイコンとタスクバーのアイコンが変わります

しかし exe ファイル自体のアイコンは変わってません
エクスプローラやデスクトップのアイコンはデフォルトのままです

wpf-sicon1

ここも変えたい場合は WPF のプロパティではなく プロジェクト側の設定になります
ビルド時の exe ファイルのものですからね

プロジェクトのプロパティを開いて 「アプリケーション」タブの「リソース」のところのアイコンを設定します

vs-proj-icon

png は使えなくて ico ファイルにしないといけませんでした

変換サービスはいっぱいありますが 今回私はここにしました
http://icoconvert.com/

たまにサイズの選択ができないところもありますが 複数選択して作れるサイトが良いと思います

アイコンを設定してビルドすると

wpf-sicon2

と exe ファイルの見た目も変わりました

exe のアイコンを指定すると 各ウィンドウに指定しなくてもデフォルトが exe のものになります
Style の部分を削除しても

wpf-icon2

となっています

なんか ico ファイルの方がキレイですね

exe のアイコンと一緒でいいなら Window の Icon プロパティは指定は不要ですが 「特別このウィンドウはアイコンを変えたい」 というときには上に書いた方法でウィンドウに Icon をつけたり Style で共通のものを使ったりして指定することができます