2010-08-11 4 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}"> 
관련 문제