2016-05-03 5 views
0



У меня есть стиль-шаблон для моих кнопок в моем приложении, который выглядит следующим образом:WPF ButtonStyle и MouseEnter/-Оставьте-Event

<Style TargetType="{x:Type Button}"> 
      <Setter Property="OverridesDefaultStyle" Value="true"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Button}"> 
         <Border Name="Border"> 
          <ContentPresenter RecognizesAccessKey="True"/> 
         </Border> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsKeyboardFocused" Value="true"> 
           <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
          </Trigger> 
          <Trigger Property="IsDefaulted" Value="true"> 
           <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
          </Trigger> 
          <Trigger Property="IsMouseOver" Value="true"> 
           <Setter TargetName="Border" Property="Background" Value="Transparent" /> 
          </Trigger> 
          <Trigger Property="IsPressed" Value="true"> 
           <Setter TargetName="Border" Property="Background" Value="Transparent" /> 
           <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
          </Trigger> 
          <Trigger Property="IsEnabled" Value="false"> 
           <Setter TargetName="Border" Property="Background" Value="Transparent" /> 
           <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
           <Setter Property="Foreground" Value="Transparent"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

Теперь я хотел поставить MouseEnter и MouseLeave событие в некоторых из моих кнопок и менять их фон и т. д. на лету. Если я отключу стиль, все будет работать нормально (за исключением того, что кнопки получают границу и синий фон стандартного стиля).

Теперь мой вопрос будет: «Как я могу изменить стиль без границ, прозрачной кнопки без синего фона на MouseOver и получить MouseEnter и MouseLeave к огню, так что я могу установить фон программно

ответ

1

вы должны добавить? дополнительные стили для кнопок, которые вы хотите, чтобы реагировать иначе, чем остальные, а затем использовать триггеры, как в вашем вставленного кода для изменения фона.

<Style x:Key="diffrentButton" TargetType="{x:Type Button}"> 

...

+0

Звучит хорошо, но проблема в том, что footbackgrounds - многоугольники, которые создаются «на лету». Поэтому я не могу использовать XAML-tri ggers ... Я хотел использовать программные изменения. Эти многоугольники расположены под кнопками (ZIndex -1) и прозрачны, как кнопки. Когда theres mouseenter они получат определенный цвет. как я сказал, он уже работает без стиллетов ... почти .... –