Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наследование стилей 
:(
    Опции темы
neProger
Дата 4.3.2012, 04:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Недавно начал осваивать WPF. Появилась такая задача: 

необходимо создать кнопки двух видов - обычные кнопки и кнопки, которые увеличиваются при наведении на них курсором мышки. Цвета, градиенты и т.д. необходимо задавать в одном месте (базовый стиль(?)). Разница лишь в том, что одни кнопки увеличиваются при наведении курсора, а другие – нет

Базовый стиль выглядит так:

Код

        <Style x:Key="BaseStyle" TargetType="{x:Type Button}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate x:Name="BaseTemplate"  TargetType="{x:Type Button}">
                        <Grid >
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="CommonStates">
                                    <VisualState x:Name="MouseOver">
                                        <Storyboard.../>
                                    </VisualState>
                                    <VisualState x:Name="Pressed">
                                        <Storyboard.../>
                                    </VisualState>
                                    <VisualState x:Name="Disabled"/>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                            <Border x:Name="border" BorderThickness="2" BorderBrush="#FFC07C00" Background="#FFFD9700">
                                <ContentPresenter x:Name="contentPresenter" Margin="2"/>
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>


Во втором стиле, видимо, должен быть какой-то "Storyboard", который трансформирует "Grid" исходного стиля (?)

А на кнопки вешать необходимые стили:

Код

<Button Style="{DynamicResource BaseStyle}" Content="Обычная кнопка"/>
<Button Style="{DynamicResource CursorScaleStyle}" Content="Увеличивающаяся кнопка"/>


как создать второй стиль на основе первого, так, чтобы изменялись рамеры кнопки при наведении курсора?
PM MAIL   Вверх
erm0l0v
Дата 19.3.2012, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



Я бы сделал так:
Код

<Style.Triggers>
            <EventTrigger RoutedEvent="MouseEnter">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Duration="0:0:0.2" Storyboard.TargetProperty="Opacity" To="1"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
            <EventTrigger RoutedEvent="MouseLeave">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Duration="0:0:1" Storyboard.TargetProperty="Opacity" To="0.6"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Style.Triggers>


Здесь я в качестве примера изменяю прозрачность элемента. И не нужно переопределять ControlTemplate.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0622 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.