2015-10-23 7 views
0

У меня есть приложение wpf с пограничным элементом управления, видимость которого привязана к свойству на viewmodel.Открывать/закрывать анимацию при изменении видимости

Элемент управления отображается и скрыт, как я ожидал бы, но я бы хотел добавить анимацию, чтобы сделать показ и скрыть визуальные изображения более гладкими. Я что-то думаю по линиям анимации ширины элемента управления от 0 до 250, поэтому он дает вид расширения/сжатия.

У меня было очень мало опыта с смесью, поэтому не уверен, что это правильный путь, но я создал раскадровку, которая делает масштабное преобразование на X, а затем попыталась добавить триггер против видимости элемент управления, чтобы запустить раскадровку. Однако я не могу найти событие видимости для добавления к триггеру. Может кто-то указать мне верное направление?

+0

Я всегда рекомендую использовать 'Визуальная States' для этого требования https://msdn.microsoft.com/en-us/library/ee371169%28v=expression.40%29.aspx – Gusdor

+0

Спасибо, я Посмотрите на это – Tiggy

ответ

1

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

<Style x:Key="myBorder" TargetType="Border"> 
    <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Trigger.EnterActions> 
       <BeginStoryboard> 
        <Storyboard TargetProperty="Opacity"> 
         <DoubleAnimation From="1" To="0" Duration="0:0:0.5" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </Trigger.EnterActions> 
      <Trigger.ExitActions> 
       <BeginStoryboard> 
        <Storyboard TargetProperty="Opacity"> 
         <DoubleAnimation From="0" To="1" Duration="0:0:0.5" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </Trigger.ExitActions> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

Надеюсь, это поможет.

Update

Чтобы сжать границу можно использовать ThicknessAnimation для предыдущего образца кода.

<Storyboard TargetProperty="BorderThickness"> 
    <ThicknessAnimation From="1,1,1,1" To="0,0,0,0" Duration="0:0:0.5" /> 
</Storyboard> 
+0

Спасибо за предложение, я пытаюсь добиться эффекта роста и сжатия, а не исчезать/исчезать. – Tiggy

+0

Обновленный ответ на термоусадочный эффект. – bars222

+0

Спасибо за это - я фактически использовал двойную анимацию по ширине, чтобы получить эффект, который я хочу. Еще раз спасибо за вашу помощь :) – Tiggy

Смежные вопросы