2015-10-05 4 views
1

В моем приложении WPF я хочу изменить цвет рамки для TextBox при вводе мыши, но он не меняет цвет на тот, который я хочу, но он меняется на не-голубой (я думаю, это стандартный цвет).Текстовое поле Wpf не меняет borderbrush при срабатывании курсора?

Вот мой XAML код:

<Window x:Class="OnePlayApp.Views.LoginDialog" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:OnePlayApp.Views" 
     WindowStyle="None" 
     ResizeMode="NoResize" 
     Title="LoginDialog" Height="350" Width="550" Foreground="Black"> 

    <Grid Background="#282828"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="24*"/> 
      <ColumnDefinition Width="43*"/> 
      <ColumnDefinition Width="43*"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="59*"/> 
      <RowDefinition Height="50*"/> 
      <RowDefinition Height="50*"/> 
      <RowDefinition Height="191*"/> 
     </Grid.RowDefinitions> 

     <Image Margin="9,10,173,6" Source="/Resources/logo.png" Grid.ColumnSpan="2"/> 


     <Label x:Name="AccountName" Content="Account name" Margin="6,10,1,13" Foreground="#FFAFADAD" HorizontalContentAlignment="Right" Grid.Row="1"/> 
     <Label x:Name="Password" Content="Password&#xD;&#xA;" Margin="6,10,1,13" Foreground="#FFAFADAD" HorizontalContentAlignment="Right" Grid.Row="2"/> 

     <TextBox x:Name="username" Margin="6,11,15,8" Background="#FF282828" Foreground="White" FontSize="15" Text="[email protected]" FontFamily="Yu Gothic UI Semibold" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" VerticalContentAlignment="Center" BorderThickness="10"> 
      <TextBox.Style> 
       <Style TargetType="{x:Type TextBox}"> 
        <Setter Property="BorderBrush" Value="Green" /> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="BorderBrush" Value="Red" /> 

         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </TextBox.Style> 
     </TextBox> 
     <PasswordBox x:Name="password" Margin="6,8,15,13" Background="#FF282828" Password="123456789" FontSize="18" Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="2"/> 

     <Button x:Name="LoginBtn" Content="Login" Margin="6,15,15,146" Click="LoginBtn_Click" FontSize="16" FontFamily="Yu Gothic UI Semibold" Foreground="White" Grid.Column="1" Grid.Row="3"> 
      <Button.Style> 
       <Style TargetType="{x:Type Button}"> 
        <Setter Property="Background" Value="#FFAFADAD"/> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="{x:Type Button}"> 
           <Border Background="{TemplateBinding Background}"> 
            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
           </Border> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Background" Value="#79B539"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
     </Button> 
     <Button x:Name="CancelBtn" Content="Cancel" Margin="6,15,15,146" Click="CancelBtn_Click" FontSize="16" FontFamily="Yu Gothic UI Semibold" Foreground="White" Grid.Column="2" Grid.Row="3"> 
      <Button.Style> 
       <Style TargetType="{x:Type Button}"> 
        <Setter Property="Background" Value="#FFAFADAD"/> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="{x:Type Button}"> 
           <Border Background="{TemplateBinding Background}"> 
            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
           </Border> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Background" Value="#79B539"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 

     </Button> 



    </Grid> 
    </Window> 
+0

"- спасибо." <- Вы имеете в виду, что это ваш код XAML? – MajkeloDev

+0

Привет @ petethepagan-gerbil Я пытался загрузить свой код XAML, но он не появляется в моем вопросе? –

+0

Это не сработает. Лучшим решением было бы создать шаблон управления для этого текстового поля, а внутри шаблона управления установить триггеры – MajkeloDev

ответ

3

Я была такая же проблема на Windows 8, и единственный способ, которым я был в состоянии решить эту проблему (которая, как представляется, ошибка в WPF) был с ControlTemplate. Это стандартный шаблон управления для TextBox как кашлял Blend. Я изменил цвета BorderBrush, добавил его в мой глобальный стиль TextBox, и он отлично работает. Там может быть лучшее решение, но это то, что работает для меня.

<Style TargetType="{x:Type TextBox}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TextBoxBase}"> 
       <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True"> 
        <ScrollViewer x:Name="PART_ContentHost" Focusable="False" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="Opacity" TargetName="border" Value="0.56"/> 
        </Trigger> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="BorderBrush" TargetName="border" Value="Red"/> 
        </Trigger> 
        <Trigger Property="IsKeyboardFocused" Value="True"> 
         <Setter Property="BorderBrush" TargetName="border" Value="Orange"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
Смежные вопросы