2011-01-05 27 views
2

我想在按下MenuItem時更改MenuItem的背景。無法設置MenuItem的IsPressed事件的Background屬性

<Style x:Key="{x:Type MenuItem}" TargetType="MenuItem"> 
    <Style.Triggers> 
     <Trigger Property="MenuItem.IsPressed" Value="True"> 
      <Setter Property="MenuItem.Background" Value="#FFE389" /> 
      <Setter Property="MenuItem.BorderBrush" Value="#C2762B" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

我試圖做上述情況,但是觸發似乎並沒有工作。觸發器是否錯誤?

更新:它適用於事件IsMouseOver但IsPressed似乎並沒有工作

更新2:它適用於TopLevelMenuItems但TopLevelMenuHeaderItems不起作用。 alt text

回答

1

嘗試......不與MenuItem前言屬性名稱和修改TargetTypex:Key語法...

<Style x:Key="MyStyle" TargetType="{x:Type MenuItem}"> 
    <Style.Triggers> 
     <Trigger Property="IsPressed" Value="True"> 
      <Setter Property="Background" Value="#FFE389" /> 
      <Setter Property="BorderBrush" Value="#C2762B" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

編輯:

根據您需要更新看看默認的MenuItem是怎麼樣的constructed via XAML。這應該讓你在需要的地方爲MenuItem的不同部分提供樣式。請注意,在MenuItem樣式中使用Role屬性處理頂級和子級別的標題和項目。

+1

刪除序言'MenuItem'不起作用 – 2011-01-05 17:24:14

+0

@Proximo添加了額外的更改... – 2011-01-05 17:30:56

+0

@Proximo添加了對MSDN上的MenuItem的默認樣式的引用,應該讓你在需要的地方去 – 2011-01-05 17:59:12