Wpf 如何从viewmodel在视图中触发动画?

Wpf 如何从viewmodel在视图中触发动画?,wpf,mvvm,Wpf,Mvvm,所以现在我在控件上使用一个属性,它绑定到我的viewmodel上的一个bool属性,名为searcheditemfound(及其对searcheditemnotfound)。我不能只有一个属性,因为即使我提出OnPropertyChanged(“variableName”),它也不会激活触发器,除非有实际的值更改。这意味着在视图模型的代码中,我必须这样做: SearchedItemNotFound=false; SearchedItemNotFound=true private bool _Se

所以现在我在控件上使用一个属性,它绑定到我的viewmodel上的一个bool属性,名为searcheditemfound(及其对searcheditemnotfound)。我不能只有一个属性,因为即使我提出OnPropertyChanged(“variableName”),它也不会激活触发器,除非有实际的值更改。这意味着在视图模型的代码中,我必须这样做:

SearchedItemNotFound=false; SearchedItemNotFound=true

private bool _SearchedItemNotFound;
public bool SearchedItemNotFound
{
  get
  {
    return _SearchedItemNotFound;
  }
  set
  {
    if (value != _SearchedItemNotFound)
    {
      _SearchedItemNotFound = value;
      OnPropertyChanged("SearchedItemNotFound");
    }
  }
}
当我真正想要的是只绑定到视图模型中的事件时。但是,eventtriggers只触发路由事件。我可以将路由事件放置在视图模型中吗?我想我必须从控件继承才能这样做

这里有一个帖子:

提及使用

<i:Interaction.Triggers>
    <samples:DataEventTrigger EventName="YourEvent">
        <im:ControlStoryboardAction Storyboard="{StaticResource Storyboard1}" 
               ControlStoryboardOption="Play"/>
    </samples:DataEventTrigger>
</i:Interaction.Triggers>


它看起来很完美,只是它需要expression blend,而我在visual studio 2008中没有。我想知道我还有什么其他选项。我甚至不介意它是否是MVVM。我不是一个纯粹主义者,我只是想了解我的选项是什么。

a
RoutedEvent
是一个UI元素,在视图模式中没有位置l、 就我个人而言,我看不出将
bool
属性从
true
更改为
false
,然后再次更改为
true
有什么问题……这样做有一个合理的理由。如果这真的让你感到困扰,那么就用一个方法将其隐藏起来,并调用它:

private StartSearchedItemNotFoundAnimation()
{
    SearchedItemNotFound = false; 
    SearchedItemNotFound = true;
}
使用任何更复杂和/或更昂贵的方法来复制您已经拥有的功能几乎没有任何意义。

我写了一个答案,其中提到了在
ViewModel
中使用事件。