小编Job*_*obe的帖子

在切换时触发大小动画

我试图在单击“显示详细信息”/“隐藏详细信息”按钮时切换高度动画,然后在再次单击该按钮时返回其初始值。

我有一个带有预定义样式的 DataControls:DataForm,我希望在单击按钮时将“高度”属性设置为更大的值。

DataControl:Dataform 看起来像这样。

<DataControls:DataForm x:Name="DataEdit"
                           Grid.Row="1"
                           ItemsSource="{Binding}"
                           Style="{DynamicResource CommonDataFormStyle}"
                           ContentLoaded="OnContentLoaded" 
                           Height="150">
Run Code Online (Sandbox Code Playgroud)

按钮本身就在这样的 DataForm 中。

<DataControls:DataForm.ReadOnlyTemplate>
     <DataTemplate>          
         <Grid>
            <Grid.RowDefinitions>...
               <StackPanel Grid.Column="0" Grid.Row="0">            
                  <Button Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl} }, Path=DataContext.ToggleDetailsCommand, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" x:Name="ToggleDetailsButton"                                      
                             Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl} }, Path=DataContext.ToggleDetailsButtonText}"/> 
...
Run Code Online (Sandbox Code Playgroud)

我只是通过使用一个名为“显示详细信息”的标签和一个标签上的 RoutedEvent="Label.MouseLeftButtonDown" 事件触发器来扩展详细信息。然后使用另一个名为“隐藏详细信息”的标签来再次切换动画。

我也尝试将这种样式放在按钮上,并尝试使用数据触发器来切换动画。但是,无论 StoryBoard.Target="{Binding ElementName=DataEdit}" 属性如何,这只会为按钮的高度设置动画。

<Style TargetType="{x:Type Button}" x:Key="ExpandDetailsStyle" >            
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl} }, Path=DataContext.IsOpened}" Value="true">
                <DataTrigger.EnterActions>
                    <StopStoryboard BeginStoryboardName="EndAnimation" />
                    <BeginStoryboard Name="NewAnimation">
                        <Storyboard>
                            <DoubleAnimation Storyboard.Target="{Binding ElementName=DataEdit}" Storyboard.TargetProperty="Height" From="150" To="300" Duration="0:0:0.1" />
                        </Storyboard> …
Run Code Online (Sandbox Code Playgroud)

c# wpf animation datatrigger storyboard

2
推荐指数
1
解决办法
1396
查看次数

标签 统计

animation ×1

c# ×1

datatrigger ×1

storyboard ×1

wpf ×1