2013-04-25 2 views
0

У меня есть текстовые поля, и я хочу изменить некоторые их свойства, когда наложу на них мышь. В этом случае я хочу изменить BorderBrush и BorderThickness.On Mouse Over не запускает триггеры в ContentTemplate

Это мой XAML ControlTemplate, это внутри Window.Resource тег:

<Style TargetType="{x:Type TextBox}"> 
     <Setter Property="SnapsToDevicePixels" Value="True"/> 
     <Setter Property="OverridesDefaultStyle" Value="True"/> 
     <Setter Property="AllowDrop" Value="true"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TextBoxBase}"> 
        <Border 
         Name="Border" 
         Padding="4" 
         BorderBrush="#ccc" 
         BorderThickness="1"> 
         <ScrollViewer Margin="0" x:Name="PART_ContentHost"/> 
         <Border.Background> 
          <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
           <GradientStop Color="#FFC4C4C4" Offset="0.0" /> 
           <GradientStop Color="#FFF8F8F8" Offset="0.10" /> 
          </LinearGradientBrush> 
         </Border.Background> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsMouseOver"> 
          <Setter Property="BorderThickness" Value="1"></Setter> 
          <Setter Property="BorderBrush" Value="Orange"></Setter> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

Этот фрагмент кода должен установить свойства, которые я написал внутри Trigger тега, когда курсор мыши находится над текстовым полем:

    <ControlTemplate.Triggers> 
         <Trigger Property="IsMouseOver"> 
          <Setter Property="BorderThickness" Value="1"></Setter> 
          <Setter Property="BorderBrush" Value="Orange"></Setter> 
         </Trigger> 
        </ControlTemplate.Triggers> 

Но этот триггер просто не срабатывает. Ничего не произошло. Почему? И как я могу это достичь?

+0

Там нет смысла в предваряя вопросы с метками границы элемента. Для этого есть система тегов. Пожалуйста, прочитайте http://meta.stackexchange.com/q/19190/147072 для получения дополнительной информации. – Patrick

ответ

0

Я думаю, вам нужно указать имя

<Trigger Property="IsMouseOver" Value="true" > 
    <Setter TargetName="Border" Property="BorderThickness" Value="1"></Setter> 
    <Setter TargetName="Border" Property="BorderBrush" Value="Orange"></Setter> 
</Trigger> 
0

Вы можете попробовать это, добавить свойство Value в свой триггер и установить его в true. Также необходимо добавить имя цели, чтобы сообщить ему об изменении свойств границы, которая находится в вашем шаблоне управления.

<Trigger Property="IsMouseOver" Value="true" > 
     <Setter Property="BorderThickness" TargetName="Border" Value="1"></Setter> 
     <Setter Property="BorderBrush" TargetName="Border" Value="Orange"></Setter> 
</Trigger>