WPF TextBox在焦点上改变颜色

时间:2016-02-21 20:40:11

标签: c# .net wpf

我在聚焦时尝试改变输入框上的颜色。

首先我声明输入按钮:

<TextBox x:Name="usernameTextBox"
         HorizontalAlignment="Left"
         Height="23" 
         Margin="115,31,0,0"
         TextWrapping="Wrap"
         VerticalAlignment="Top"
         Width="277"
         GotFocus="usernameTextBox_GotFocus"/>

下面我尝试为该文本框添加样式

<Style x:Key="usernameTextBox"
       TargetType="{x:Type TextBox}">
      <Style.Triggers>
          <Trigger Property="IsFocused"
                   Value="true">
               <Setter Property="Background"
                       Value="{StaticResource OnMouseOverColor}" />
         </Trigger>
    </Style.Triggers>
</Style>

错误:

  

错误1“样式”类型的值无法添加到集合或   类型字典   'UIElementCollection'。 D:\ VS \ VIM \ VIM_WPF \ login.xaml 15 9 VIM_Wpf

任何其他解决方案如何解决这个问题?

1 个答案:

答案 0 :(得分:8)

您可以将样式定义为资源(​​例如,在您的usercontrol / window的资源中),然后执行类似

的操作
<TextBox Style="{StaticResource theKeyOfYourStyle}" ..../>

或者您在TextBox中明确设置它:

<TextBox x:Name="usernameTextBox" HorizontalAlignment="Left" Height="23" Margin="115,31,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="277" GotFocus="usernameTextBox_GotFocus">
  <TextBox.Style>
    <Style TargetType="{x:Type TextBox}">
       <Style.Triggers>
         <Trigger Property="IsFocused" Value="true">
           <Setter Property="Background" Value="{StaticResource OnMouseOverColor}" />
         </Trigger>
       </Style.Triggers>
     </Style>
   </TextBox.Style>
</TextBox>