Вопрос

После нажатия кнопок WPF в нашем приложении они светятся синим, возвращаются к исходному цвету, снова становятся синими и т.д.Похоже, что это поведение по умолчанию в Windows Vista / 7.В XP этого не происходит.Есть какой-нибудь совет?

Это было полезно?

Решение

Вам нужно переопределить шаблон кнопки по умолчанию -- http://mark-dot-net.blogspot.com/2007/07/creating-custom-wpf-button-template-in.html тебе стоит начать.

В частности, Раздел 3:

<ControlTemplate.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Setter TargetName="border" Property="BorderBrush" Value="#FF4788c8" />
        <Setter Property="Foreground" Value="#FF4788c8" />
    </Trigger>
    <Trigger Property="IsPressed" Value="True">                   
       <Setter Property="Background" >
           <Setter.Value>
               <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
                   <GradientStop Color="#FFFFD190" Offset="0.35"/>
                   <GradientStop Color="Orange" Offset="0.95"/>
                   <GradientStop Color="#FFFFD190" Offset="1"/>
               </LinearGradientBrush>
            </Setter.Value>
        </Setter>
        <Setter TargetName="content" Property="RenderTransform" >
            <Setter.Value>
                <TranslateTransform Y="1.0" />
            </Setter.Value>
        </Setter>
    </Trigger>
    <Trigger Property="IsDefaulted" Value="True">
       <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
    </Trigger>
    <Trigger Property="IsFocused" Value="True">
       <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
    </Trigger>
    <Trigger Property="IsEnabled" Value="False">
       <Setter TargetName="border" Property="Opacity" Value="0.7" />
       <Setter Property="Foreground" Value="Gray" />
   </Trigger>
</ControlTemplate.Triggers>

Другие советы

Вам нужно переопределить ControlTemplate.В противном случае он использует триггеры для установки цветов для событий, таких как наведение на них курсора мыши.Если вы просто установите Background, вы устанавливаете фон по умолчанию только тогда, когда нет Triggerэто продолжается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top