Переопределяю шаблон кнопки. Создал тригер на IsMouseOver (предположим меняется цвет). При запуске на W7 кнопка сначала меняет отображение, а потом белеет.
Возможно ли это исправить? Я так понимаю, что существует еще одно событие, которое стоит выше MouseOver.
Заранее спасибо.
Здравствуйте, MxMsk, Вы писали:
MM>Накидай сюда шаблон.
Шаблон:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<RadialGradientBrush RadiusX="1" RadiusY="5" GradientOrigin="0.5,0.3"
x:Key="HighlightBackground">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="DarkRed" Offset=".4"/>
</RadialGradientBrush>
<RadialGradientBrush RadiusX="1" RadiusY="5" GradientOrigin="0.5, 0.3"
x:Key="PressedBackground">
<GradientStop Color="Green" Offset="0" />
<GradientStop Color="Green" Offset=".4" />
</RadialGradientBrush>
<SolidColorBrush Color="Aqua" x:Key="DefaultBackground"></SolidColorBrush>
<SolidColorBrush Color="Green" x:Key="DisabledBackground"></SolidColorBrush>
<RadialGradientBrush RadiusX="1" RadiusY="5" GradientOrigin="0.5, 0.3"
x:Key="Border">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="Chocolate" Offset=".4" />
</RadialGradientBrush>
<!-- Шаблон элемента управления Button.-->
<ControlTemplate x:Key="GradientButtonTemplate" TargetType="{x:Type Button}">
<Border Name="Border" BorderBrush="{StaticResource Border}" BorderThickness="2"
CornerRadius="0" Background="{StaticResource DefaultBackground}"
TextBlock.Foreground="White">
<Grid>
<Rectangle Name="FocusCue" Visibility="Hidden" Stroke="Black"
StrokeThickness="1" StrokeDashArray="1 2" SnapsToDevicePixels="True">
</Rectangle>
<ContentPresenter Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"></ContentPresenter>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="Background"
Value="{StaticResource HighlightBackground}" />
</Trigger>
<Trigger Property="IsMouseDirectlyOver" Value="True">
<Setter TargetName="Border" Property="Background"
Value="{StaticResource HighlightBackground}" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Border" Property="Background"
Value="{StaticResource PressedBackground}" />
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter TargetName="FocusCue" Property="Visibility"
Value="Visible"></Setter>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Border" Property="Background"
Value="{StaticResource DisabledBackground}"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Style TargetType="{x:Type Button}">
<Setter Property="BorderBrush"
Value="{StaticResource Border}"></Setter>
<Setter Property="Background"
Value="{StaticResource DefaultBackground}"></Setter>
<Setter Property="TextBlock.Foreground"
Value="White"></Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background"
Value="{StaticResource HighlightBackground}" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background"
Value="{StaticResource PressedBackground}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background"
Value="{StaticResource DisabledBackground}"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
Сори, что без коментов..
Здравствуйте, AlexzundeR, Вы писали:
AR>Здравствуйте, MxMsk, Вы писали:
MM>>Накидай сюда шаблон.
AR>Шаблон:
Стиль применяется, да. Но шаблон нет. Я не уловил идею или в стиле не хватает:
<Setter Property="Template"
Value="{StaticResource GradientButtonTemplate}"/>
?
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, AlexzundeR, Вы писали:
AR>>Здравствуйте, MxMsk, Вы писали:
MM>>>Накидай сюда шаблон.
AR>>Шаблон:
MM>Стиль применяется, да. Но шаблон нет. Я не уловил идею или в стиле не хватает:
MM><Setter Property="Template"
MM> Value="{StaticResource GradientButtonTemplate}"/>
Вы очень хорошо поняли проблему) Всё работает. Большое спасибо.