[WPF] Windows 7 и кнопка. Забеливается.
От: AlexzundeR  
Дата: 30.05.10 19:00
Оценка:
Переопределяю шаблон кнопки. Создал тригер на IsMouseOver (предположим меняется цвет). При запуске на W7 кнопка сначала меняет отображение, а потом белеет.
Возможно ли это исправить? Я так понимаю, что существует еще одно событие, которое стоит выше MouseOver.
Заранее спасибо.
wpf
Re: [WPF] Windows 7 и кнопка. Забеливается.
От: MxMsk Португалия  
Дата: 30.05.10 19:59
Оценка:
Здравствуйте, AlexzundeR, Вы писали:

AR>Переопределяю шаблон кнопки. Создал тригер на IsMouseOver (предположим меняется цвет). При запуске на W7 кнопка сначала меняет отображение, а потом белеет.

AR>Возможно ли это исправить? Я так понимаю, что существует еще одно событие, которое стоит выше MouseOver.
AR>Заранее спасибо.
Накидай сюда шаблон.
Re[2]: [WPF] Windows 7 и кнопка. Забеливается.
От: AlexzundeR  
Дата: 30.05.10 20:14
Оценка:
Здравствуйте, 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>

Сори, что без коментов..
Re[3]: [WPF] Windows 7 и кнопка. Забеливается.
От: MxMsk Португалия  
Дата: 30.05.10 21:22
Оценка:
Здравствуйте, AlexzundeR, Вы писали:

AR>Здравствуйте, MxMsk, Вы писали:

MM>>Накидай сюда шаблон.
AR>Шаблон:
Стиль применяется, да. Но шаблон нет. Я не уловил идею или в стиле не хватает:
<Setter Property="Template" 
        Value="{StaticResource GradientButtonTemplate}"/>

?
Re[4]: [WPF] Windows 7 и кнопка. Забеливается.
От: AlexzundeR  
Дата: 31.05.10 12:20
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Здравствуйте, AlexzundeR, Вы писали:


AR>>Здравствуйте, MxMsk, Вы писали:

MM>>>Накидай сюда шаблон.
AR>>Шаблон:
MM>Стиль применяется, да. Но шаблон нет. Я не уловил идею или в стиле не хватает:
MM>
<Setter Property="Template" 
MM>        Value="{StaticResource GradientButtonTemplate}"/>


Вы очень хорошо поняли проблему) Всё работает. Большое спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.