llllTnTlll 2021-03-09 11:03 采纳率: 0%
浏览 248

WPF DataTrigger只触发一次的问题

 有这么一个用户控件,我想让他的右侧是一个可以左右平移的卡片

 下面是我是用的两组动画,一组让选定的这个grid向左移动一组向右,现在需要使用数据触发器来控制动画执行

        <Storyboard x:Key="ShowRight">
            <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)">
                <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,0"/>
                <EasingThicknessKeyFrame KeyTime="0:0:0.4" Value="-290,0,0,0"/>
            </ThicknessAnimationUsingKeyFrames>
        </Storyboard>

        <Storyboard x:Key="ShowLeft">
            <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)">
                <EasingThicknessKeyFrame KeyTime="0" Value="-290,0,0,0"/>
                <EasingThicknessKeyFrame KeyTime="0:0:0.4" Value="0,0,0,0"/>
            </ThicknessAnimationUsingKeyFrames>
        </Storyboard>

我在需要控制的Grid中添加了下面这一组数据触发器

            <Grid x:Name="CardGrid" Grid.Column="3" Background="White" Width="580" Panel.ZIndex="1">
                <Grid.Style>
                    <Style>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding AnimationModel.CardState}" Value="Left">
                                <DataTrigger.EnterActions>
                                    <BeginStoryboard Storyboard="{StaticResource ShowLeft}"/>
                                </DataTrigger.EnterActions>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding AnimationModel.CardState}" Value="Right">
                                <DataTrigger.EnterActions>
                                    <BeginStoryboard Storyboard="{StaticResource ShowRight}"/>
                                </DataTrigger.EnterActions>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Grid.Style>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <!--CardLeft-->
                <Grid Grid.Column="0">
                    <Button Content="Edit" Width="100" Command="{Binding DetailCommand}"/>
                </Grid>
                <!--CardRight-->
                <Grid Grid.Column="1" Background="Black">
                    <Button Content="Back" Width="100" Command="{Binding OutlineCommand}"/>
                </Grid>
            </Grid>
        </Grid>

这里是用于绑定的两组命令:

        /// <summary>
        /// 显示大纲视图命令
        /// </summary>
        private RelayCommand _outlineCommand;
        public RelayCommand OutlineCommand
        {
            get
            {
                return _outlineCommand
                    ?? (_outlineCommand = new RelayCommand(
                    () =>
                    {
                        AnimationModel.CardState = "";
                        AnimationModel.CardState = "Left";
                    }));
            }
            set { _outlineCommand = value; }
        }
        /// <summary>
        /// 显示细节视图命令
        /// </summary>
        private RelayCommand _detailCommand;
        public RelayCommand DetailCommand
        {
            get
            {
                return _detailCommand
                    ?? (_detailCommand = new RelayCommand(
                    () =>
                    {
                        AnimationModel.CardState = "";
                        AnimationModel.CardState = "Right";
                        
                    }));
            }
            set { _outlineCommand = value; }
        }

但是不知为何只有第一次点击Edit的时候卡片会向左移动,然后再点击Back(Back是放在右侧Grid的按钮)就回不去了,想问一下到底是为什么,有什么解决方法(不要改动触发器类型,单纯的事件触发器不能满足将来的需求)

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-27 15:55
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置