powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как запустить анимацию дочернего контрола по событию в родительском контроле?
11 сообщений из 11, страница 1 из 1
Как запустить анимацию дочернего контрола по событию в родительском контроле?
    #38145896
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть док-панель, в ней кнопка. Хочу, чтобы кнопка плавно появлялась (через свойство прозрачности), когда мышь попадает на док-панель, и плавно исчезала, когда мышь уходит из док-панели.
...
Рейтинг: 0 / 0
Как запустить анимацию дочернего контрола по событию в родительском контроле?
    #38145906
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да, такое поведение должно быть шаблонным - т. е. чтобы можно было поместить в словарь ресурсов и применять к любым дочерним контролам в виде там стиля или шаблона.
...
Рейтинг: 0 / 0
Как запустить анимацию дочернего контрола по событию в родительском контроле?
    #38146469
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, к чёрту шаблонное поведение - просто анимировать дочерний элемент при событии в родительстком. Как?
...
Рейтинг: 0 / 0
Как запустить анимацию дочернего контрола по событию в родительском контроле?
    #38146633
unknownfromrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

Ну и в чем проблема?
Создаешь анимацию для кнопки на основе свойства Opacity.
Делаешь триггер для твоей панели для событий MouseEnter и MouseLeave.
Ну и там по мелочи потом смотри - возможно тебе надо будет (когда разница временная между событиями MouseEnter и MouseLeave больше твоего Key в анимации) начать анимацию сначала или продолжить от текущего положения. Собственно можешь засунуть как в шаблон так и сразу в контрол.
Если будет очень тяжело - дерни - помогу, но только если ты будешь затягивать с этим - то помочь вряд ли получится
...
Рейтинг: 0 / 0
Как запустить анимацию дочернего контрола по событию в родительском контроле?
    #38147117
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unknownfromrususer7320,

Ну и в чем проблема?
Создаешь анимацию для кнопки на основе свойства Opacity.
Делаешь триггер для твоей панели для событий MouseEnter и MouseLeave.
Ну и там по мелочи потом смотри - возможно тебе надо будет (когда разница временная между событиями MouseEnter и MouseLeave больше твоего Key в анимации) начать анимацию сначала или продолжить от текущего положения. Собственно можешь засунуть как в шаблон так и сразу в контрол.
Если будет очень тяжело - дерни - помогу, но только если ты будешь затягивать с этим - то помочь вряд ли получится
Не могли бы вы полный код привести? Анимацию я создал - хранить её надо только в сториборд, а она, в свою очередь, только в триггере события. Т. е. и триггер в кнопке надо делать. А как связать это с панелью?

Вот эта анимация работает только на кнопке, как сделать, чтобы она работала на кнопке, при событии на панели?

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<DockPanel Grid.Row="0" Grid.Column="0" >
  <Button 
    <Button.Triggers>
      <Trigger Property="Control.IsMouseOver" Value="true">
        <Trigger.EnterActions>
          <BeginStoryboard>
            <Storyboard >
              <DoubleAnimation Duration="0:0:0.100" To="1" Storyboard.TargetProperty="Opacity"/>
            </Storyboard>
          </BeginStoryboard>
        </Trigger.EnterActions>
        <Trigger.ExitActions>
          <BeginStoryboard>
            <Storyboard >
              <DoubleAnimation Duration="0:0:0.100" To="0" Storyboard.TargetProperty="Opacity"/>
            </Storyboard>
          </BeginStoryboard>
        </Trigger.ExitActions>
      </Trigger>
    </Button.Triggers>
  </Button>
</DockPanel>
...
Рейтинг: 0 / 0
Как запустить анимацию дочернего контрола по событию в родительском контроле?
    #38147121
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там на самом деле исключение будет, т. к. в триггерах к кнопке только триггеры событий можно подключать. Но вот именно, что я и не знаю, как сделать.
...
Рейтинг: 0 / 0
Как запустить анимацию дочернего контрола по событию в родительском контроле?
    #38147136
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фу ты, блин, нашёл:

Код: 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.
<DockPanel Grid.Row="0" Grid.Column="0" Background="Transparent" >
  <Button 
    Name="aaa"
    DockPanel.Dock="Right"
  </Button>
  
  <DockPanel.Triggers>
    <EventTrigger RoutedEvent="DockPanel.MouseEnter">
      <BeginStoryboard>
        <Storyboard>
          <DoubleAnimation 
            Duration="0:0:0.100" 
            To="1" 
            Storyboard.TargetName="aaa"
            Storyboard.TargetProperty="Opacity"/>
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
    <EventTrigger RoutedEvent="DockPanel.MouseLeave">
      <BeginStoryboard>
        <Storyboard>
          <DoubleAnimation 
            Duration="0:0:0.100" 
            To="0" 
            Storyboard.TargetName="aaa"
            Storyboard.TargetProperty="Opacity"/>
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>

  </DockPanel.Triggers>
</DockPanel>



Теперь как это сделать в шаблонном виде (но не обязательно через template, или даже лучше без template), чтобы я такую штуку мог к любому сочетанию панель-кнопка пременять - из словаря ресурсов, например, через стиль там или ещё чего?
...
Рейтинг: 0 / 0
Как запустить анимацию дочернего контрола по событию в родительском контроле?
    #38147140
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё такая проблема - при разметке, что выше, почему-то получается, что если у панели установлено свойство бэкграунда, то работает по всей панели, которая занимает место, отмеченное красным прямоугльником на рисунке ниже. А если не установлено, то только если мышь над надписью и самой кнопкой (отмечено синим). Почему так? Я в утилите Snoop (анализирует визуальное дерево контролов) посмотрел - там что с бэкграундом, что без него, панель занимает всегда место, отмеченное красным. Приходится устанавливать бэкграунд, хотя он мне не нужен.

...
Рейтинг: 0 / 0
Как запустить анимацию дочернего контрола по событию в родительском контроле?
    #38148884
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблему в предыдущем посте не решил, а с повторным использованием полученной анимации - только через ContentPresenter -> ContentControl или UserControl.
...
Рейтинг: 0 / 0
Как запустить анимацию дочернего контрола по событию в родительском контроле?
    #38152951
unknownfromrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

Гляну в выходные.Пока времени нет
...
Рейтинг: 0 / 0
Как запустить анимацию дочернего контрола по событию в родительском контроле?
    #38153188
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бэкграунд в Транспарент установил. Но всё равно интересно, почему без установки бэкграунда панель сжимается до своего контента, а с установкой - растягивается по всей доступной площади.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как запустить анимацию дочернего контрола по событию в родительском контроле?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]