Установите / снимите флажок ToggleButton с StoryBoard в WPF - PullRequest
1 голос
/ 23 октября 2009

У меня есть анимация, которая разворачивается / сворачивается примерно на StackPanel с, в окне есть некоторые ToggleButton с, которые необходимо отключить, когда StackPanel свернут. У меня есть анимация, как это:

<Storyboard x:Key="cmdUnchecked">
   <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="StackPanel1" Storyboard.TargetProperty="(FrameworkElement.Height)">
      <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="37"/>
   </DoubleAnimationUsingKeyFrames>
</Storyboard>

Это скрывает StackPanel, но мне нужно снять отметку T oggleButton с других событий.

Можно ли снять отметку ToggleButton с этого StoryBoard?

Если так, нужно ли мне проверять, уже отмечен ли он / не отмечен?

Ответы [ 2 ]

1 голос
/ 07 сентября 2014

Вы должны использовать BooleanAnimations для анимации логических значений:

     <BooleanAnimationUsingKeyFrames Storyboard.TargetName="YourToggleButton" Storyboard.TargetProperty="IsChecked">
           <DiscreteBooleanKeyFrame Value="False" KeyTime="0:0:0"/>
     </BooleanAnimationUsingKeyFrames>

Вы можете поместить DoubleAnimations в ToggleButton.Triggers как EventTriggers на RoutedEvents Checked и Unckecked, затем просто установите / снимите переключатель с помощью BooleanAnimation, и ToggleButton автоматически запустит двойная анимация для изменения высоты стековой панели

1 голос
/ 23 октября 2009

Вы можете использовать ObjectAnimationUsingKeyFrames следующим образом:

<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="YourToggleButton" Storyboard.TargetProperty="(ToggleButton.IsChecked)">
    <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="False" />
</ObjectAnimationUsingKeyFrames>

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

...