所以现在我在我的控件上使用了一个属性,它绑定到我的viewmodel上的bool属性,名为searchingitemfound(带有对,searchitemnotfound)。我不能只有一个属性,因为即使我引发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>
看起来很完美,除了它需要表达混合,我在Visual Studio 2008中,它不可用。我想知道我还有其他选择。我甚至不介意它不是MVVM。我不是纯粹主义者,我只是想了解我的选择。
答案 0 :(得分:2)
RoutedEvent
是一个UI元素,在视图模型中没有位置。就个人而言,我无法真正看到将bool
属性从true
更改为false
然后再返回true
的问题...... 是< / em>这样做的正当理由。如果它真的困扰你,那么只需将它隐藏在一个方法中,然后调用它:
private StartSearchedItemNotFoundAnimation()
{
SearchedItemNotFound = false;
SearchedItemNotFound = true;
}
使用任何更复杂和/或更昂贵的方法来复制已经所拥有的功能几乎没有任何意义。