2011-02-10 62 views
2

我已經爲menuItem編寫了一個模板,其中我有一個切換按鈕,該切換按鈕又具有一個模板。在按鈕的模板中,我通過改變不同邊框的不透明度,爲按鈕的不同視覺狀態提供不同的視覺效果。現在說當點擊menuItem時,會顯示操作按鈕上的點擊效果。但是當我將鼠標懸停在該菜單項上時,即使在切換按鈕的選中狀態下,我也希望具有相同的突出顯示效果。但突出顯示的效果會應用於除了此切換按鈕之外的整個菜單項,只是因爲懸停事件不會傳播到按鈕。WPF菜單項模板問題

想附上圖像,使問題清楚,但由於我是新手,我不允許這樣做。

當menuItem突出顯示時,我如何設置邊界的不透明度,使點擊效果爲0?

 <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" SharedSizeGroup="Icon"/> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="Auto" SharedSizeGroup="Shortcut"/> 
      </Grid.ColumnDefinitions> 
      <Grid x:Name="stackPanel" Background="{StaticResource DataLayerPanelBackGroundColorBrush}" > 
       <Grid.Resources> 
        <ResourceDictionary Source="../Themes/Framework.xaml"/> 
       </Grid.Resources> 
       <Border x:Name="backgroundMouseOverVisual2" BorderThickness="0,0,0,0" Margin="0,3,0,3" 
            Background="{StaticResource ActionButtonMouseOverBackgroundColorBrush}" Opacity="0"/> 
       <local:ActionButton DataContext="{TemplateBinding Tag}" x:Name="actionButton" Background="White" 
        MultiActionIdent="{Binding Converter={StaticResource ActionToIdentConverter}}"  
        SnapsToDevicePixels="True" Style="{StaticResource MultiActionMenuItemActionButtonStyle}" Margin="0" 
        /> 
      </Grid> 
      <StackPanel x:Name="contentStackPanel" Background="{StaticResource DataLayerPanelBackGroundColorBrush}" Grid.Column="1"> 
       <ContentPresenter 
        TextElement.Foreground="{StaticResource MenuTextColorBrush}" 
        SnapsToDevicePixels="True" 
       Name="HeaderHost" 
       ContentSource="Header" 
       RecognizesAccessKey="True" 
       Width="Auto" 
       Margin="10,4,35,4" /> 
      </StackPanel> 
      <TextBlock 
       x:Name="InputGestureText" 
       Grid.Column="2" 
       Text="{TemplateBinding InputGestureText}" 
       DockPanel.Dock="Right" /> 
     </Grid> 
     <Border x:Name="Border" BorderThickness="0.5" Margin="1,1,1,1" Padding="2,2,2,2" BorderBrush="Black" Background="{x:Null}" Opacity="0"/> 
    </Grid> 

及以下的切換按鈕模板,被命名爲actionButton在上面的模板:

+0

東西時,菜單項的IsHighlighted屬性設置爲切換按鈕的控件模板內邊框的真正的不透明度值應設置爲0。我怎麼可以這樣做它?? – Anee 2011-02-10 12:06:09

回答

0

您需要使用Style Triggers改變基於不同狀態的風格。

示例代碼段:

<Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="true"> 
      <Setter Property="BorderThickness" Value="0"/> 
     </Trigger> 
    </Style.Triggers>