WPF: исчезающие значки - PullRequest
       20

WPF: исчезающие значки

7 голосов
/ 02 апреля 2009

У меня есть несколько значков, которые объявлены в Window.Resources. Они хорошо отображаются при первом появлении (например, при щелчке меню, работает значок MenuItem), но после отображения другого меню (например, контекстного меню) исходный значок исчезает и не возвращается. Как будто последний элемент, впервые использовавший значок, сохраняет его.

<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, но происходит то же самое. Это не просто один, каждый значок, который используется более чем в одном месте, ведет себя таким образом.

1 Ответ

9 голосов
/ 02 апреля 2009

Это потому, что ваш ресурс - Image, то есть Control. Control s может иметь только одного родителя, поэтому он эффективно переизобретается в каждом MenuItem на лету.

Ваши варианты:

  1. Не используйте Image, вместо этого используйте ImageSource или даже string, содержащий URI изображения.
  2. Установить ресурс как не общий с атрибутом x:Shared XAML. Это создаст несколько Image элементов управления по мере необходимости.
...