2009-04-02 16 views
7

私はWindow.Resourcesで宣言されているいくつかのアイコンを持っています。最初に表示する必要があるときに表示されます(たとえば、メニューがクリックされ、MenuItemアイコンが機能します)。別のメニュー(たとえば、コンテキストメニュー)が表示された後、元のアイコンが消えて戻りません。あたかも最初にアイコンを使用した最後の要素がそれを保持しているかのようです。WPF:消えるアイコン

<Window.Resources> 
    <Image x:Key="Chart_16" 
      Source="pack://application:,,,/Resources/images/chart_16.png" /> 
    ... 
<Window.Resources> 

<MenuItem Header="Summary" 
      Command="loc:AppCommands.ShowSummary" 
      Icon="{StaticResource Chart_16}" /> 

私は、24ビットPNG、インターレース方式の24ビットPNGおよび8ビットPNGとして保存しようとしましたが、同じことが起こります。それだけではなく、複数の場所で使用されるすべてのアイコンがこのように動作します。

答えて

9

あなたのリソースがImageです(これはControlです)。 Controlには親が1つしかないので、効果的に各MenuItemに親子関係が再設定されています。

あなたのオプションは以下のとおりです。

  1. Imageを使用し、代わりにImageSourceや画像のURIを含むさえstringを使用しないでください。
  2. リソースをx:Shared XAML属性と非共有に設定します。これにより、必要に応じて複数のImageコントロールが作成されます。
+0

ありがとう、x:Shared属性がトリックを行いました。 – Echilon

関連する問題