2009-04-02 14 views
7

Mam kilka ikon, które są zadeklarowane w Window.Resources. Pokazują się dobrze po raz pierwszy, kiedy muszą się pojawić (np. Kliknięto menu, ikona MenuItem działa), ale po wyświetleniu innego menu (np. Menu kontekstowego) oryginalna ikona znika i nie wraca. To tak, jakby ostatni element, który użył ikony po raz pierwszy, zachował ją.WPF: Znikające ikony

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

Próbowałem zapisując go jako 24bit PNG, przeplatanego 24bit PNG i 8bit PNG, ale to samo się dzieje. To nie jest jedna, każda ikona, która jest używana w więcej niż jednym miejscu, zachowuje się w ten sposób.

Odpowiedz

9

To dlatego, że Twój zasób to Image, który jest Control. Control s może mieć tylko jednego rodzica, więc jest skutecznie ponownie rodzicielstwo w każdym MenuItem w locie.

wyboru są następujące opcje:

  1. Nie używaj Image i zamiast używać ImageSource lub nawet string zawierający URI obrazu.
  2. Ustawia zasób na niewspólny z atrybutem XAML x:Shared. W razie potrzeby utworzy wiele elementów sterujących Image.
+0

Dzięki, atrybut x: Shared zrobił lewę. – Echilon