2013-10-14 2 views
0

두 번째 패널은 jQuerys slideDown 효과와 같이 단추를 클릭 할 때 아래로 미끄러 져 표시되는 추가 정보 인 두 개의 스택 패널이 있습니다. 그리고 나서 버튼을 다시 클릭하면 위로 미끄러 져 올라갑니다.WPF 가시성 애니메이션 트리거 문제

저는 애니메이션을 처음 보던 적이 없었지만 몇 가지 연구를 해왔습니다. 나는 여전히 매우 혼란스럽고,이 간단한 문제를 파악할 수 없다.

Visibility = Visible 속성에서만 수신 대기하면 잘 동작합니다. 그러나 패널을 위로 밀어 내고 싶을 때 이상한 행동을합니다.

이 내 XAML 코드 :

<Grid> 
       <Grid.RowDefinitions> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="Auto" /> 
        </Grid.RowDefinitions> 

        <StackPanel Grid.Row="0" Width="600" Orientation="Horizontal"> 
         <TextBlock Style="{StaticResource Heading4}">Panel 1</TextBlock> 
         <Button Width="300" Margin="30,0,0,0" Click="Button_OnClick">Click to slide other panel down</Button> 
        </StackPanel> 

        <StackPanel Name="StackPanelShowHide" Grid.Row="1" Width="500" Orientation="Vertical" Background="Beige" Height="70"> 
         <StackPanel.Style> 
          <Style TargetType="StackPanel"> 
           <Style.Triggers> 
            <Trigger Property="Visibility" Value="Visible"> 
             <Trigger.EnterActions> 
              <BeginStoryboard> 
               <Storyboard> 
                <DoubleAnimation Storyboard.TargetProperty="Height" From="0" To="70" Duration="0:0:1" /> 
               </Storyboard> 
              </BeginStoryboard> 
             </Trigger.EnterActions> 
            </Trigger> 
            <Trigger Property="Visibility" Value="Collapsed"> 
             <Trigger.EnterActions> 
              <BeginStoryboard> 
               <Storyboard> 
                <DoubleAnimation Storyboard.TargetProperty="Height" From="70" To="0" Duration="0:0:1" /> 
               </Storyboard> 
              </BeginStoryboard> 
             </Trigger.EnterActions> 
            </Trigger> 
           </Style.Triggers> 
          </Style> 
         </StackPanel.Style> 
         <TextBlock Style="{StaticResource Heading4}">New panel</TextBlock> 

        </StackPanel> 

       </Grid> 

그리고이 내 Codebehind가있다 : 정말 당신이 :)

종류의 안부 도움이 될 수 있습니다 희망

private void Button_OnClick(object Sender, RoutedEventArgs E) { 
     if (StackPanelShowHide.Visibility == Visibility.Collapsed) { 
      StackPanelShowHide.Visibility = Visibility.Visible; 
     } else { 
      StackPanelShowHide.Visibility = Visibility.Collapsed; 
     } 

    } 

, 라스

답변

0

축소시 애니메이션을 슬라이드하는 대신 즉시 사라지는 것 같습니다. Visibility를 Collapsed로 설정했기 때문에 표시 할 것이 없습니다.

는이 문제를 해결하려면 다음

가) MVVM 사용 : 그것은 일부의 ViewModel에 재산과 트리거를 추가 할 수 있습니다. ICommand를 통해 속성을 수정하십시오.

b) 가시성을 설정하지 말고 이벤트 처리기에서 적절한 Storyboard를 시작하십시오.

+0

좋아, 나는 그것을 조사 할 것이다. – Farsen

0

귀하의 문제는 StackPanelVisibility 값이 Collapsed이면 UI에서 제거됩니다. 따라서 Animation이 발생하더라도 사용자가 보지 못합니다.