2009-04-02 12 views
7

Tengo varios iconos que se declaran en Window.Resources. Aparecen bien la primera vez que necesitan aparecer (p. Ej .: se hace clic en un Menú, el ícono de Ítem de Menú funciona), pero después de que se muestra otro Menú (p. Ej .: un menú contextual), el ícono original desaparece y no regresa. Es como si el último elemento que usó el ícono por primera vez pudiera conservarlo.WPF: iconos que desaparecen

<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}" /> 

He intentado guardarlo como PNG de 24 bits, un PNG de 24 bits y un entrelazado de 8 bits PNG, pero sucede lo mismo. No es solo uno, cada ícono que se usa en más de un lugar se comporta de esta manera.

Respuesta

9

Eso es porque su recurso es un Image, que es un Control. Control s solo pueden tener un padre, por lo que se vuelve a criar de forma efectiva en cada MenuItem sobre la marcha.

Las opciones son:

  1. No utilice Image y en su lugar usar ImageSource o incluso un string que contiene el URI de la imagen.
  2. Establezca el recurso como no compartido con el atributo x:Shared XAML. Esto creará múltiples controles Image según sea necesario.
+0

Gracias, el atributo x: Shared hizo el truco. – Echilon

Cuestiones relacionadas