2014-10-23 2 views
0

Я работаю над стилем кнопки, и эффект зависания дает мне некоторые проблемы. Я сделал поиск, но не нашел ответы (или не искал правильно, как это более вероятно), поэтому я решил спросить здесь. Я задаю следующий стиль в своем элементе управления WPF User, а затем установил этот стиль на кнопку.Стиль триггера WPF Не распознающий фон

<Style x:Key="TileButton" TargetType="Button"> 
      <Setter Property="BorderThickness" Value="1" /> 
      <Setter Property="BorderBrush" Value="Black" /> 
      <Setter Property="Height" Value="80" /> 
      <Setter Property="Width" Value="80" /> 
      <Setter Property="Margin" Value="10,10,0,0" /> 
      <Setter Property="Background" Value="#FF91b220" /> 
      <Setter Property="FontWeight" Value="Bold" /> 
      <Setter Property="Foreground" Value="White" /> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background" Value="#FF91b220" /> 
       </Trigger> 
      </Style.Triggers> 

     </Style> 

Все, кажется, работает, за исключением, когда я мыши над кнопкой, а не цвет фона оставаясь последовательным, как я хочу, он возвращается обратно по умолчанию WPF Светлоголубой в. Я попытался добавить другие изменения свойств, такие как увеличение высоты над мышью, чтобы подтвердить, что эти изменения вступают в силу. Кажется, это тот фон, который хочет меня заблокировать.

ТИА

ответ

3

Вы должны полностью переопределить унаследованный стиль Windows, для кнопок. Попробуйте добавить фрагмент followinf к вашему стилю.

<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type Button}"> 
      <Border Background="{TemplateBinding Background}"> 
       <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </Border> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 

Также перемещайте ваши сеттеры (а точнее их содержимое) для границы на границе внутри шаблона.

+0

Спасибо! Это было полезно. –

1

Это поведение кнопки определяется в стиле кнопки по умолчанию, цвет «мышь» определяется как привязка. Чтобы сохранить свой цвет при наведении мыши, вы можете переопределить шаблон кнопки, smth вроде:

<Style TargetType="Button"> 
       <Setter Property="OverridesDefaultStyle" Value="True"/> 
       <Setter Property="FontWeight" Value="Bold" /> 
       <Setter Property="Foreground" Value="White" />     

       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="Button"> 
          <Border BorderThickness="1" 
            Margin="10,10,0,0"       
            BorderBrush="Black"        
            Background="#FF91b220" 
            Height="80" 
            Width="80"> 

          </Border> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 


      </Style> 
Смежные вопросы