2010-08-11 68 views
0

我試圖在用戶右鍵單擊顯示基本上自定義控件的Silverlight應用程序時彈出的效果。我正在使用上下文菜單,並且所有的工作都非常棒,除了我在設置上下文菜單時遇到了麻煩,因此在用戶鼠標懸停時它不會自行突出顯示。從Silverlight上下文菜單中刪除MouseOver效果

這裏是我想要做的一個片段:

<toolkit:ContextMenuService.ContextMenu> 
     <toolkit:ContextMenu Height="100" Background="Transparent" HorizontalOffset="-100" VerticalOffset="-100" Margin="98,112,0,0" Name="contextMenu1" VerticalAlignment="Top" Width="200"> 
      <toolkit:ContextMenu.Style> 
       <Style TargetType="toolkit:ContextMenu"> 
        <Setter Property="BorderThickness" Value="0" /> 
        <Setter Property="Padding" Value="0" /> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="toolkit:ContextMenu"> 
           <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="2"> 
            <Grid> 
             <ItemsPresenter Margin="{TemplateBinding Padding}" /> 
            </Grid> 
           </Border> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </toolkit:ContextMenu.Style> 
      <Canvas Width="100" Height="100" Background="Transparent"> 
       <Button Width="100" Height="30">Something</Button> 
       <Button Width="100" Height="30" Canvas.Top="70">Something Else</Button> 
      </Canvas> 
     </toolkit:ContextMenu> 
    </toolkit:ContextMenuService.ContextMenu> 

當菜單是可見的,我得到我想要的(兩個按鈕只是浮在鼠標附近)的效果,但是當我鼠標它的上下文菜單的整個框突出顯示。

以下是一個演示這是一個示例應用程序:

http://github.com/vermeeca/ContextMenuDemo

我如何禁用的效果呢?

回答

1

感謝同事我有解決方案。我只需在ContextMenu上設置ItemContainerStyle。

<UserControl.Resources> 
    <Style x:Key="NoMouseOverStyle" TargetType="toolkit:MenuItem"> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="BorderBrush" Value="Transparent"/> 
     <Setter Property="Padding" Value="4,3,2,3"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="toolkit:MenuItem"> 
        <Grid> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CommonStates"> 
           <VisualState x:Name="Normal"/> 
           <VisualState x:Name="Disabled"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Presenter"/> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
          <VisualStateGroup x:Name="FocusStates"> 
           <VisualState x:Name="Unfocused"/> 
           <!-- VisualState x:Name="Focused"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Bg"/> 
             <ColorAnimation Duration="0" To="#40FFFFFF" Storyboard.TargetProperty="(Shape.Stroke).(SolidColorBrush.Color)" Storyboard.TargetName="InnerBorder"/> 
            </Storyboard> 
           </VisualState --> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <Rectangle Fill="{TemplateBinding Background}" RadiusY="2" RadiusX="2" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="1"/> 
         <Rectangle x:Name="Bg" Opacity="0" RadiusY="2" RadiusX="2" Stroke="#8071CBF1" StrokeThickness="1"> 
          <Rectangle.Fill> 
           <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
            <GradientStop Color="#34C5EBFF" Offset="0"/> 
            <GradientStop Color="#3481D8FF" Offset="1"/> 
           </LinearGradientBrush> 
          </Rectangle.Fill> 
         </Rectangle> 
         <Rectangle x:Name="InnerBorder" Margin="1" RadiusY="2" RadiusX="2" Stroke="Transparent"/> 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition MinWidth="24" Width="Auto"/> 
           <ColumnDefinition Width="4"/> 
           <ColumnDefinition Width="*"/> 
           <ColumnDefinition Width="17"/> 
          </Grid.ColumnDefinitions> 
          <ContentPresenter Content="{TemplateBinding Icon}" Margin="1" VerticalAlignment="Center"/> 
          <ContentPresenter x:Name="Presenter" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Grid.Column="2" Margin="{TemplateBinding Padding}"/> 
         </Grid> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</UserControl.Resources> 

然後

<toolkit:ContextMenu Height="100" Background="Transparent" HorizontalOffset="-100" VerticalOffset="-100" Margin="98,112,0,0" Name="contextMenu1" VerticalAlignment="Top" Width="200" ItemContainerStyle="{StaticResource NoMouseOverStyle}"> 
相關問題