2011-03-26 82 views
2

我遇到了WPF菜單和圖標的問題。 我想要做的事情是這樣的事情:WPF菜單圖標更改問題

 Menu1 - NOICON op1 
       NOICON opt2 
       ICON opt3 
     Menu2 - NOICON opt4 
       ICON opt5 

我有一個這樣的菜單:

 <Menu> 
     <MenuItem Header="Engine" Click="MenuItem_Click_12" > 
      <MenuItem Header="Use SCCP Standard" Click="MenuItem_Click_11" x:Name="SCCP"/> 
      <MenuItem Header="Use ITS" Click="MenuItem_Click_10" x:Name="ITS"/> 
      <MenuItem Header="Use ODE" Click="MenuItem_Click_13" x:Name="ODE"/> 
     </MenuItem> 
     <MenuItem Header="Constraint Store" > 
       <MenuItem Header="muParser" Click="MenuItem_Click_15" x:Name="muParser"/> 
       <MenuItem Header="Flee" Click="MenuItem_Click_14" x:Name="Flee"/> 
      </MenuItem> 
     </Menu> 

點擊後面的代碼是:

private void MenuItem_Click_14(object sender, RoutedEventArgs e) 
    { 
     CS_TYPE = "Flee"; 
     Flee.Icon = CHECK; 
     muParser.Icon = NOCHECK; 
    } 

對於每一個點擊事件... 當我點擊(對於樣本)上逃離,它得到正確的形象和muParser也... 但其他菜單中的每個圖標suddendly消失了!

我的例子有什麼問題?爲什麼圖標從2個不同的菜單中消失?

非常感謝!

回答

2

您需要確保您爲每個MenuItem創建一個新的圖像。單個圖像不能在多個地方使用。

這是一個常見的錯誤,可能是你遇到的問題。圖像是一個可視化的,就像一個按鈕。如果您將兩個MenuItem的MenuItem.Icon設置爲相同的圖像,那麼該圖像將不得不出現在兩個位置的可視樹中(這是不允許的)。

您可以通過複製Image.Source值從舊的圖像創建一個新的圖像。