첫 번째로 Silverlight/WPF는 입니다. 실제로이 종류의 물건에 좋은입니다. 프레임 워크 사람들은 가능한 한 유연하게 작업 엔지니어링 xaml을 훌륭하게 해냈습니다.
admittingly이 ResourceDictionaries, Triggers, Actions, Storyboards, 애니메이션 같은 것들 (키 프레임/Double ...), 템플릿 생성, Styles 의 이러한 종류의 시도하기 전에 얻을 수있는 많은입니다 만 말했다되고 당신은 이러한 은유의를 일단 편한 방법.
일부 프라이머로 런 다운을 강조합니다.
샘플 모습입니다 어느
Visual States을 조율하기 위해 일부
Triggers and Actions로에 의존 것입니다 이 물건들을 모으고있어. <Grid x:Name="LayoutRoot">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CentrePanelStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="00:00:00">
<Storyboard>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="grid" Storyboard.TargetProperty="(FrameworkElement.Width)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="350"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</VisualTransition>
<VisualTransition GeneratedDuration="00:00:00.3000000" To="Open">
<Storyboard>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="grid" Storyboard.TargetProperty="(FrameworkElement.Width)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="350">
<EasingDoubleKeyFrame.EasingFunction>
<PowerEase EasingMode="EaseIn"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
<EasingDoubleKeyFrame KeyTime="00:00:00.6000000" Value="800">
<EasingDoubleKeyFrame.EasingFunction>
<QuarticEase EasingMode="EaseInOut"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</VisualTransition>
<VisualTransition From="Open" GeneratedDuration="00:00:00.3000000" To="Closed">
<VisualTransition.GeneratedEasingFunction>
<BounceEase EasingMode="EaseOut"/>
</VisualTransition.GeneratedEasingFunction>
<Storyboard>
<DoubleAnimation Duration="00:00:00.6000000" Storyboard.TargetName="grid" Storyboard.TargetProperty="(FrameworkElement.Width)" BeginTime="00:00:00">
<DoubleAnimation.EasingFunction>
<QuarticEase EasingMode="EaseInOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
<VisualState x:Name="Open">
<Storyboard>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="grid" Storyboard.TargetProperty="(FrameworkElement.Width)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="800"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Closed"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Fill="#A1808080" />
<Grid Name="CentrePanel" VerticalAlignment="Center" HorizontalAlignment="Center" Width="800" Height="500">
<Border CornerRadius="3"
Background="LightGray" HorizontalAlignment="Left">
<Grid x:Name="grid" Width="350" Margin="2">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="40" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="350" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Fill="Beige" />
<Rectangle Grid.Column="1" Fill="#FFDDDCF5" />
<Button
Content="Close"
Width="79"
HorizontalAlignment="Left" Margin="94,130,0,0" Height="33" VerticalAlignment="Top" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ic:GoToStateAction StateName="Closed"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button Content="Open" Width="81"
HorizontalAlignment="Left" Margin="92,85,0,0" Height="32" VerticalAlignment="Top" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ic:GoToStateAction StateName="Open"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</Grid>
</Border>
</Grid>
</Grid>
와우 !! 그런 유익한 답변을 해주셔서 감사합니다. – user118190
나는 온종일 오후에 힘들어했습니다. 여기에 귀하의 게시물 정확히, 거의, 거의, 필요한 거의입니다! 2 개의 버튼 대신 1 개의 버튼을 사용하여 패널을 안팎으로 밀어 넣을 수 있는지 알고 계십니까? 그것 이외에, 이것은 내가 필요한 것, 감사합니다. –