2017-01-25 4 views
1

J'ai une RichTextBox sur une application Windows Universal que je veux garder la même couleur à tout moment (lors d'événements non sélectionnés, en survol et sélectionné). Actuellement, si je définis la couleur Arrière-plan/Avant-plan, elle les définit lorsque le contrôle n'est pas sélectionné, mais une fois qu'il est survolé ou concentré sur les couleurs, il revient à l'arrière-plan blanc par défaut avec du texte noir.UWP - RichTextBox fond/couleur de premier plan changeant sur hover/focus

<RichEditBox HorizontalAlignment="Stretch" Margin="0,0,0,30" VerticalAlignment="Stretch" 
    FontFamily="Courier New" FontSize="12" IsSpellCheckEnabled="False" 
    Background="Black" Foreground="LightGray" IsReadOnly="True"/> 

Comment puis-je faire le « fond » et « Premier plan » restent cohérents par vol stationnaire/événements sélectionnés de sorte qu'il est toujours un fond noir avec un premier plan GrisClair?

Répondre

4

Vous devez effacer PointerOver et Focused VisualState.

<Style TargetType="RichEditBox" x:Key="RichEditBoxStyle"> 
    <Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}" /> 
    <Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}" /> 
    <Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" /> 
    <Setter Property="Background" Value="{ThemeResource SystemControlBackgroundAltHighBrush}" /> 
    <Setter Property="SelectionHighlightColor" Value="{ThemeResource SystemControlHighlightAccentBrush}" /> 
    <Setter Property="BorderBrush" Value="{ThemeResource SystemControlForegroundChromeDisabledLowBrush}" /> 
    <Setter Property="BorderThickness" Value="{ThemeResource TextControlBorderThemeThickness}" /> 
    <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" /> 
    <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" /> 
    <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Auto" /> 
    <Setter Property="ScrollViewer.VerticalScrollMode" Value="Auto" /> 
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" /> 
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" /> 
    <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False" /> 
    <Setter Property="TextWrapping" Value="Wrap" /> 
    <Setter Property="Padding" Value="{ThemeResource TextControlThemePadding}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="RichEditBox"> 
       <Grid> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="CommonStates"> 
          <VisualState x:Name="Disabled"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HeaderContentPresenter" 
                    Storyboard.TargetProperty="Foreground"> 
             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseMediumLowBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundElement" 
                   Storyboard.TargetProperty="Background"> 
             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledTransparentBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderElement" 
                   Storyboard.TargetProperty="Background"> 
             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlBackgroundBaseLowBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderElement" 
                   Storyboard.TargetProperty="BorderBrush"> 
             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentElement" 
                   Storyboard.TargetProperty="Foreground"> 
             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledChromeDisabledLowBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PlaceholderTextContentPresenter" 
                   Storyboard.TargetProperty="Foreground"> 
             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledChromeDisabledLowBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="Normal" /> 
          <VisualState x:Name="PointerOver"/> 

          <VisualState x:Name="Focused"/> 



         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Height="*"/> 
        </Grid.RowDefinitions> 
        <Border x:Name="BackgroundElement" 
         Grid.Row="1" 
         Background="{TemplateBinding Background}" 
         Margin="{TemplateBinding BorderThickness}" 
         Opacity="{ThemeResource TextControlBackgroundRestOpacity}" 
         Grid.ColumnSpan="2" 
         Grid.RowSpan="1"/> 
        <Border x:Name="BorderElement" 
         Grid.Row="1" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         Grid.ColumnSpan="2" 
         Grid.RowSpan="1"/> 
        <ContentPresenter x:Name="HeaderContentPresenter" 
            x:DeferLoadStrategy="Lazy" 
            Visibility="Collapsed" 
            Grid.Row="0" 
            Foreground="{ThemeResource SystemControlForegroundBaseHighBrush}" 
            Margin="0,0,0,8" 
            Grid.ColumnSpan="2" 
            Content="{TemplateBinding Header}" 
            ContentTemplate="{TemplateBinding HeaderTemplate}" 
            FontWeight="Normal" /> 
        <ScrollViewer x:Name="ContentElement" 
           Grid.Row="1" 
           HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" 
           HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" 
           VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" 
           VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" 
           IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" 
           IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" 
           IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" 
           Margin="{TemplateBinding BorderThickness}" 
           Padding="{TemplateBinding Padding}" 
           IsTabStop="False" 
           ZoomMode="Disabled" 
           AutomationProperties.AccessibilityView="Raw"/> 
        <ContentControl x:Name="PlaceholderTextContentPresenter" 
           Grid.Row="1" 
           Foreground="{ThemeResource SystemControlPageTextBaseMediumBrush}" 
           Margin="{TemplateBinding BorderThickness}" 
           Padding="{TemplateBinding Padding}" 
           IsTabStop="False" 
           Grid.ColumnSpan="2" 
           Content="{TemplateBinding PlaceholderText}" 
           IsHitTestVisible="False"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

et à utiliser avec votre commande:

<RichEditBox Style="{StaticResource RichEditBoxStyle}" 
       Height="200" 
       VerticalAlignment="Center"/> 
+0

Merci, qui a parfaitement fonctionné. J'ai eu du mal à les trouver précédemment (après avoir vu votre code, j'ai pu chercher et trouver que je pouvais faire un clic droit sur un contrôle et "Editer une copie" du menu gabarit générer la base du XAML). Très apprécié à nouveau! –