2016-03-25 2 views

ответ

1

Вам необходимо отредактировать стиль MenuFlyoutItem и MenuFlyoutPresenter. Эта ссылка поможет вам в этом. [Изменить MenuFlyoutItem] [1]. Обновление Вот стиль для MenuFlyoutItem Для вашего удобства вы можете отредактировать нажатое состояние. Вы можете проверить состояние проверки.

<Style TargetType="MenuFlyoutItem"> 
    <Setter Property="Background" Value="Transparent" /> 
    <Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" /> 
    <Setter Property="Padding" Value="{ThemeResource MenuFlyoutItemThemePadding}" /> 
    <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" /> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
    <Setter Property="VerticalContentAlignment" Value="Center" /> 
    <Setter Property="UseSystemFocusVisuals" Value="True" /> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="MenuFlyoutItem"> 
     <Grid x:Name="LayoutRoot" 
       Padding="{TemplateBinding Padding}" 
       Background="{TemplateBinding Background}" 
       BorderBrush="{TemplateBinding BorderBrush}" 
       BorderThickness="{TemplateBinding BorderThickness}"> 
      <VisualStateManager.VisualStateGroups> 
      <VisualStateGroup x:Name="CommonStates"> 
       <VisualState x:Name="Normal"> 
       <Storyboard> 
        <PointerUpThemeAnimation Storyboard.TargetName="TextBlock" /> 
       </Storyboard> 
       </VisualState> 
       <VisualState x:Name="PointerOver"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" 
        Storyboard.TargetProperty="Background"> 
        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListLowBrush}" /> 
        </ObjectAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextBlock" 
        Storyboard.TargetProperty="Foreground"> 
        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltBaseHighBrush}" /> 
        </ObjectAnimationUsingKeyFrames> 
        <PointerUpThemeAnimation Storyboard.TargetName="TextBlock" /> 
       </Storyboard> 
       </VisualState> 
       <VisualState x:Name="Pressed"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" 
        Storyboard.TargetProperty="Background"> 
        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListMediumBrush}" /> 
        </ObjectAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextBlock" 
        Storyboard.TargetProperty="Foreground"> 
        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltBaseHighBrush}" /> 
        </ObjectAnimationUsingKeyFrames> 
        <PointerDownThemeAnimation Storyboard.TargetName="TextBlock" /> 
       </Storyboard> 
       </VisualState> 
       <VisualState x:Name="Disabled"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextBlock" 
        Storyboard.TargetProperty="Foreground"> 
        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseMediumLowBrush}" /> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
       </VisualState> 
      </VisualStateGroup> 
      <VisualStateGroup x:Name="CheckPlaceholderStates"> 
       <VisualState x:Name="NoPlaceholder" /> 
       <VisualState x:Name="CheckPlaceholder"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextBlock" 
        Storyboard.TargetProperty="Margin"> 
        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource MenuFlyoutItemPlaceholderThemeThickness}" /> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
       </VisualState> 
      </VisualStateGroup> 
      <VisualStateGroup x:Name="PaddingSizeStates"> 
       <VisualState x:Name="DefaultPadding" /> 
       <VisualState x:Name="NarrowPadding"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" 
               Storyboard.TargetProperty="Padding"> 
        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource MenuFlyoutItemThemePaddingNarrow}" /> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
       </VisualState> 
      </VisualStateGroup> 
      </VisualStateManager.VisualStateGroups> 
      <TextBlock 
       x:Name="TextBlock" 
       Text="{TemplateBinding Text}" 
       TextTrimming="Clip" 
       Foreground="{TemplateBinding Foreground}" 
       HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
       VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> 
     </Grid> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 




    [1]: http://stackoverflow.com/questions/35763131/visualstatemanager-on-flyout-not-highlighting-entire-area 
+0

Я не уверен, поскольку это, кажется, выделяет MenuFlyoutItem над мышью, даже если они хотят увеличить этот размер выделения. Но мне нужно что-то там, где при щелчке элемента и в следующий раз, когда я вижу, что MenuFlyout ранее выбранный/щелкнутый MenuFlyoutItem подсвечивается независимо от того, выполняю ли операцию мыши или нет. – AbsoluteSith

+0

Вы редактировали стиль MenuFlyoutItem? – Archana

+0

Да, но это в основном для мыши над событием. Похоже, всякий раз, когда выбирается MenuFlyoutItem, затем вручную отредактируйте его стиль на C#, чтобы показать его выделение? Это может сработать, позвольте мне попробовать. – AbsoluteSith

Смежные вопросы