Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 2 / 1
Регистрация: 28.05.2020
Сообщений: 172

Вынести анимацию в отдельный стиль

05.04.2023, 15:01. Показов 441. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, мне постоянно кажется что я делаю что то не так, что есть более правильные методы написания кода.
Сделал анимацию для боковых кнопок, мне кажется это не нормально привязывать анимации по отдельности. Есть ли способы укоротить?
Пример:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
                   <Border>
                        <Button x:Name="B1" Width="40" Height="40" Margin="10" Style="{DynamicResource Menu.button.Style.CornerRadius}" Mouse.MouseEnter="Button_MouseEnter" Mouse.MouseLeave="Button_MouseLeave"   >
                            <Button.Triggers>
                                <EventTrigger RoutedEvent="MouseEnter">
                                    <EventTrigger.Actions>
                                        <BeginStoryboard>
                                            <Storyboard>
                                                <DoubleAnimation Storyboard.TargetProperty="Width" Storyboard.TargetName="popup"
                              From="0" To="{Binding ElementName=popup,Path=MaxWidth}"  AutoReverse="False"  Duration="0:0:0.20"  />
                                            </Storyboard>
                                        </BeginStoryboard>
                                    </EventTrigger.Actions>
                                </EventTrigger>
                                <EventTrigger RoutedEvent="MouseLeave">
                                    <EventTrigger.Actions>
                                        <BeginStoryboard>
                                            <Storyboard>
                                                <DoubleAnimation Storyboard.TargetProperty="Width" Storyboard.TargetName="popup"
                              From="{Binding ElementName=popup,Path=MaxWidth}" To="0"  AutoReverse="False"  Duration="0:0:0.20"  />
                                            </Storyboard>
                                        </BeginStoryboard>
                                    </EventTrigger.Actions>
                                </EventTrigger>
                            </Button.Triggers>
                        </Button>
                    </Border>
                    <Border>
                        <Button x:Name="B2" Width="40" Height="40" Margin="10" Style="{DynamicResource Menu.button.Style.CornerRadius}"  Mouse.MouseEnter="Button_MouseEnter" Mouse.MouseLeave="Button_MouseLeave" >
                            <Button.Triggers>
                                <EventTrigger RoutedEvent="MouseEnter">
                                    <EventTrigger.Actions>
                                        <BeginStoryboard>
                                            <Storyboard>
                                                <DoubleAnimation Storyboard.TargetProperty="Width" Storyboard.TargetName="popup"
                              From="0" To="{Binding ElementName=popup,Path=MaxWidth}"  AutoReverse="False"  Duration="0:0:0.20"  />
                                            </Storyboard>
                                        </BeginStoryboard>
                                    </EventTrigger.Actions>
                                </EventTrigger>
                                <EventTrigger RoutedEvent="MouseLeave">
                                    <EventTrigger.Actions>
                                        <BeginStoryboard>
                                            <Storyboard>
                                                <DoubleAnimation Storyboard.TargetProperty="Width" Storyboard.TargetName="popup"
                              From="{Binding ElementName=popup,Path=MaxWidth}" To="0"  AutoReverse="False"  Duration="0:0:0.20"  />
                                            </Storyboard>
                                        </BeginStoryboard>
                                    </EventTrigger.Actions>
                                </EventTrigger>
                            </Button.Triggers>
                        </Button>
                    </Border>
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2023, 15:01
Ответы с готовыми решениями:

Как вынести в отдельный файл стиль?
Перешел из более менее понятного Windows Forms в WPF , пока что сложно дается. Как можно этот отрезок добавить в отдельный стиль и...

Вынести в отдельный метод
Здравствуйте люди уважаемые, программисты мозговитые. НЕ поможете болвану, юному подовану))) &quot;Смотрите как часто вам приходится...

Вынести код в отдельный класс
Есть база данных из которой необходимо вывести данные из разных таблиц в приложение Windows Forms в dataGridView. Написал код состоящий из...

3
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
05.04.2023, 22:41
Лучший ответ Сообщение было отмечено Lesch как решение

Решение

Цитата Сообщение от Lesch Посмотреть сообщение
Есть ли способы укоротить?
Вроде коротко, ничего лишнего.
Что конкретно вызывает сомнения?

Добавлено через 5 минут
Цитата Сообщение от Lesch Посмотреть сообщение
Вынести анимацию в отдельный стиль
Можно, но не всегда.
В стилях вы не можете прослушивать события.
Но это и не всегда нужно.
В данном случае вы можете в стиле прослушивать свойство IsMouseOver.
Но есть ещё и другая проблема: Storyboard.TargetName="popup".
Триггера элемента находятся в конкретном элементе, в конкретной области видимости имён.
Поэтому из триггера кнопки можно "увидеть" элемент по имени popup.
А стили, шаблоны имеют свою область видимости имён. Иначе как бы вы смогли один стиль использовать для разных элементов?
Поэтому из триггера стиля "не видно" элементов Окна (UserControl и др.). И TargetName="popup" выдаст ошибку.
1
3 / 2 / 1
Регистрация: 28.05.2020
Сообщений: 172
05.04.2023, 22:43  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Что конкретно вызывает сомнения?
Если все нормально то хорошо, сомнения происходят ввиду неопытности, постоянно кажется что что-то не так и есть варианты правильнее и лучше. Спасибо большое!
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
05.04.2023, 22:52
Lesch, обычно такая анимация реализуется или в элементе который анимируется (popup), или в элементе предке для анимируемого элемента и элементов источников событий (например в Окне).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2023, 22:52
Помогаю со студенческими работами здесь

Вынести соединение с БД в отдельный поток
Здравствуйте, уважаемые знатоки. Проблема у меня в следующем, есть программа для работы с БД mySQL, хотелось бы вынести фукцию подключения...

Вынести в отдельный метод работу с токеном Vk
Приветствую всех. Изучаю C# 4 день и решил написать программу под vk Все хорошо , есть представления как реализовать задумка. ...

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

Можно ли вынести класс в отдельный файл
Можно ли вынести класс в отдельный файл? А потом его подключить, а то у меня получается жуткая неразбириха Заголовок продумываем

Вынести в отдельный метод часть из мейна
Задача заключается в том, что нужно проверку ввода(строчки 29-44,61-77) сделать отдельным методом. Помогите, пожалуйста) using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru