Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从viewmodel(WPF)调用视图中的动画_C#_Wpf_Animation_Mvvm_View - Fatal编程技术网

C# 从viewmodel(WPF)调用视图中的动画

C# 从viewmodel(WPF)调用视图中的动画,c#,wpf,animation,mvvm,view,C#,Wpf,Animation,Mvvm,View,我拥有:一个包含动画定义和视图定义的样式资源,一个包含数据、属性和ICommand的viewmodel 当前,应用程序可以通过单击按钮(使用ICommand)调用VM函数,通过绑定到VM属性查看&它可以从按钮运行动画。单击事件触发器 我想做什么; 如果将样式应用于列表框(例如),如何直接从VM触发动画?即,如果数据上的某些属性发生更改,是否可能导致动画运行?我知道我可以用UserControl来实现这一点,但我正在尝试将我的程序划分为更清晰定义的视图和视图模型。我不想在我的视图中使用代码,也不想

我拥有:一个包含动画定义和视图定义的样式资源,一个包含数据、属性和ICommand的viewmodel

当前,应用程序可以通过单击按钮(使用ICommand)调用VM函数,通过绑定到VM属性查看&它可以从按钮运行动画。单击事件触发器

我想做什么;
如果将样式应用于列表框(例如),如何直接从VM触发动画?即,如果数据上的某些属性发生更改,是否可能导致动画运行?我知道我可以用UserControl来实现这一点,但我正在尝试将我的程序划分为更清晰定义的视图和视图模型。我不想在我的视图中使用代码,也不想在我的虚拟机中使用动画。

编辑:在进一步研究中,我认为您需要的是:


其思想是您应该在事件中调用ICommand,从而允许进一步的事件订阅。它仍然感觉很混乱,因为它几乎忽略了标准的命令绑定语法,但由于命令绑定仍然在视图中,因此它相当于一件事。

编辑:在进一步研究中,我认为您需要的是:


其思想是您应该在事件中调用ICommand,从而允许进一步的事件订阅。它仍然感觉很混乱,因为它几乎忽略了标准的命令绑定语法,但由于命令绑定仍然在视图中,因此它相当于一件事。

编辑:在进一步研究中,我认为您需要的是:


其思想是您应该在事件中调用ICommand,从而允许进一步的事件订阅。它仍然感觉很混乱,因为它几乎忽略了标准的命令绑定语法,但由于命令绑定仍然在视图中,因此它相当于一件事。

编辑:在进一步研究中,我认为您需要的是:


其思想是您应该在事件中调用ICommand,从而允许进一步的事件订阅。它仍然感觉很混乱,因为它几乎忽略了标准的命令绑定语法,但它相当于相同的东西,因为命令绑定仍然在视图中。

当您说它可以从按钮运行动画时,您几乎回答了自己的问题。单击事件触发器。实际答案是肯定的,您可以使用数据绑定到视图模型属性的
DataTrigger
启动动画,或者使用自定义
RoutedEvent
启动
EventTrigger
以相同的方式启动动画:

<Style>
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsAnimationRunning}" Value="True">
            <DataTrigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <SomeAnimation />
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
        </DataTrigger>
    </Style.Triggers>
</Style>


IsAnimationRunning
属性从
false
更改为
true
时,这将启动动画。当您说它可以从按钮运行动画时,您几乎回答了自己的问题。单击事件触发器。实际答案是肯定的,您可以使用数据绑定到视图模型属性的
DataTrigger
启动动画,或者使用自定义
RoutedEvent
启动
EventTrigger
以相同的方式启动动画:

<Style>
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsAnimationRunning}" Value="True">
            <DataTrigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <SomeAnimation />
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
        </DataTrigger>
    </Style.Triggers>
</Style>


IsAnimationRunning
属性从
false
更改为
true
时,这将启动动画。当您说它可以从按钮运行动画时,您几乎回答了自己的问题。单击事件触发器。实际答案是肯定的,您可以使用数据绑定到视图模型属性的
DataTrigger
启动动画,或者使用自定义
RoutedEvent
启动
EventTrigger
以相同的方式启动动画:

<Style>
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsAnimationRunning}" Value="True">
            <DataTrigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <SomeAnimation />
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
        </DataTrigger>
    </Style.Triggers>
</Style>


IsAnimationRunning
属性从
false
更改为
true
时,这将启动动画。当您说它可以从按钮运行动画时,您几乎回答了自己的问题。单击事件触发器。实际答案是肯定的,您可以使用数据绑定到视图模型属性的
DataTrigger
启动动画,或者使用自定义
RoutedEvent
启动
EventTrigger
以相同的方式启动动画:

<Style>
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsAnimationRunning}" Value="True">
            <DataTrigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <SomeAnimation />
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
        </DataTrigger>
    </Style.Triggers>
</Style>


每当
IsAnimationRunning
属性从
false
更改为
true

时,就会启动动画。虽然我没有投你反对票,但这个答案应该是一个注释。@Sheridan:已修复,答案确实有效。未意识到ICommand已停止单击事件。在此网站上,通常不首选像您这样的简短答案。通常,最好在答案中包含一些链接页面,以提供一些上下文。有关详细信息,请参阅的“为链接提供上下文”部分。这个答案应该是一个评论,尽管我没有投你反对票。@Sheridan:已修复,答案确实有效。未意识到ICommand已停止单击事件。在此网站上,通常不首选像您这样的简短答案。通常,最好在答案中包含一些链接页面,以提供一些上下文。有关详细信息,请参阅的“为链接提供上下文”部分。这个答案应该是一个评论,尽管我没有投你反对票。@Sheridan:已修复,答案确实有效。未意识到ICommand已停止单击事件。在此网站上,像您这样的简短回答通常不会