Ответы пользователя по тегу WPF
  • WPF: Добавить анимацию через встроенный в элемент стиль?

    @Paulskit
    Лучше сразу делать правильно.
    1) Ваш подход с Content.Height неверен. Если Height не задан, то есть равен NaN, получим RuntimeException.
    2) Вместо того, чтобы писать стиль внутрь элемента сохраните его в Resources для данного окна/страницы.
    3) Переопределите ContentTemplate, чтобы анимация работала для всех случаев.

    Теперь о том, почему не работает.
    Изначально всё работает таким образом. Свойство Visibility нашего ContentPresenter установлено в значение Collapsed. Раскрытие производится следующим триггером.
    <Trigger Property="IsExpanded" Value="true">
       <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible"/>
    </Trigger>
    


    Для того, чтобы исправить ситуацию немного перепишем ControlTemplate.
    Для начала удалим свойство Visibility.

    После этого, добавим внутрь следующий блок:
    <ContentPresenter.LayoutTransform>
       <ScaleTransform ScaleX="1" ScaleY="0"/>
    </ContentPresenter.LayoutTransform>
    


    И в завершении, заменим вышеуказанный триггер на эти:
    <EventTrigger RoutedEvent="Expander.Expanded">
       <BeginStoryboard>
          <Storyboard Storyboard.TargetName="ExpandSite" Storyboard.TargetProperty="LayoutTransform.ScaleY">
              <DoubleAnimation To="1" Duration="0:0:0.2"/>
          </Storyboard>
       </BeginStoryboard>
    </EventTrigger>
    <EventTrigger RoutedEvent="Expander.Collapsed">
       <BeginStoryboard>
          <Storyboard Storyboard.TargetName="ExpandSite" Storyboard.TargetProperty="LayoutTransform.ScaleY">
              <DoubleAnimation To="0" Duration="0:0:0.2"/>
          </Storyboard>
       </BeginStoryboard>
    </EventTrigger>
    


    Пример:
    pastebin.com/FmGAVbA5
    Ответ написан
    3 комментария
  • WPF

    @Paulskit
    Собственно каких-то однозначных рекомендаций нет. Если из стандартного, то самое примитивное, это Slider и ProgressBar. Если хочется креатива — создавайте свой User Control, рисуйте внешний вид (самое простое — canvas и примитивы) и определяйте поведение. На WPF сделать красивый контрол не проблема. Еще как вариант — можно перерисовать внешний вид стандартных контролов.
    Ответ написан
    2 комментария
  • .NET, WPF, какую версию .NET выбрать - 3.0 или 3.5

    @Paulskit
    Полностью присоединяюсь к 2-м предыдущим постам. Нужно сразу переводить пользователей на новый фреймворк, дабы не получилось как с IE6.
    Ответ написан
    Комментировать