Pergunta
Eu tenho vários ícones que são declaradas em Window.Resources. Eles mostram-se bem o primeiro tempo eles precisam aparecer (por exemplo: um menu é clicado, o MenuItem ícone de obras), mas após o outro Menu (por exemplo: um menu de contexto) é mostrado, o ícone desaparece originais e não retorna. É como se o último elemento que usou o ícone pela primeira vez começa a mantê-lo.
<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}" />
Eu tentei salvá-lo como um 24bit PNG, um PNG 24bit entrelaçado e um 8bit PNG, mas acontece a mesma coisa. Não é apenas um, a cada ícone que é usado em mais de um lugar se comporta dessa maneira.
Solução
Isso porque o seu recurso é uma Image
, que é um Control
. Control
s só pode ter um pai assim que é efectivamente a ser re-parented em cada MenuItem
na mosca.
As suas opções são:
- Não use
Image
e passar a usarImageSource
ou mesmo umstring
contendo o URI da imagem. - Defina o recurso para não compartilhado com o atributo
x:Shared
XAML. Isto irá criar vários controlesImage
conforme necessário.