В WPF кнопка градиента пульсирует между цветом по умолчанию и новым градиентом после нажатия-Как остановить

это очень раздражающий артефакт, который я замечаю WPF, и мне было любопытно, что я потенциально могу делать неправильно, поскольку я делаю то, что кажется простым кодом в WPF XAML:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ExampleShapes.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="400" Height="400">
<Grid x:Name="LayoutRoot">
    <Button Margin="50,50,50,50" Content="I pulse when clicked Why?">
        <Button.Background>
            <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                <GradientStop Color="#FF0C0B0B" Offset="1"/>
                <GradientStop Color="#FFBF5656"/>
            </LinearGradientBrush>
        </Button.Background>
    </Button>
</Grid>

похоже, что есть некоторые значения по умолчанию, которые находятся в .NET, о которых я не знаю с событиями наведения мыши и нажмите, Что я не хочу. Я не возражаю, когда мышь парит, что она меняет цвет градиента по умолчанию, но когда я удаляю его, он меняется спина. Однако даже до применения базового кода C# для события "CLICK" (не в Примере) он предполагает "пульсирующее" поведение перехода между указанным градиентом и значением по умолчанию. Это также верно для простого цвета. Что происходит?

для получения дополнительной информации я разрабатываю на 64-битном поле Windows 7 с Visual Studio 2010 и Expression Blend 3 с использованием .NET 4.0 для VS2010 неуверенно для EB3, поскольку это более старая копия, и они оба делают это. Есть ли простой способ изменить поведение по умолчанию или должен ли я создать новый шаблон пользователя для кнопки?

любая помощь будет высоко ценится, спасибо!

1 ответов


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

нажатие кнопки устанавливает его как сфокусированный, но вы также можете достичь того же эффекта, просто нажав на кнопку.

редактировать

глядя на это немного больше, и это, кажется, по умолчанию для темы Aero для любого элемент, имеющий фокус ввода. Вы можете установить кнопку Focusable="False", однако тогда вы не можете вкладку на кнопку или нажмите Enter на нем (все еще можете нажать его, хотя), и лично я ненавижу приложения, которые я не могу перемещаться с помощью клавиатуры.

чтобы избежать мигания при нажатии, вы можете установить фокус на другой элемент управления в конце события click, однако эффект все равно будет происходить при закладке на кнопку.