2014-02-11 87 views
1

所以現在我在我的控件上使用了一個綁定到我的viewmodel上的bool屬性的屬性,名爲seariteitemfound(with its pair,seariteitemnotfound)。我不能只擁有一個屬性,因爲即使我引發OnPropertyChanged(「variableName)」,除非實際值發生變化,它也不會激活觸發器,這意味着在視圖模型的代碼中,我必須真的這樣做難看:如何從視圖模型的視圖中觸發動畫?

SearchedItemNotFound = FALSE; SearchedItemNotFound = TRUE;

private bool _SearchedItemNotFound; 
public bool SearchedItemNotFound 
{ 
    get 
    { 
    return _SearchedItemNotFound; 
    } 
    set 
    { 
    if (value != _SearchedItemNotFound) 
    { 
     _SearchedItemNotFound = value; 
     OnPropertyChanged("SearchedItemNotFound"); 
    } 
    } 
} 

當我真的想是隻綁在視圖模型的事件然而,eventtriggers只會觸發關閉路由事件。我可以在視圖模型中放置路由事件嗎?我想我必須繼承控制權才能做到這一點。

一張貼在這裏:How can I Have a WPF EventTrigger on a View trigger when the underlying Viewmodel dictates it should?

使用

<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。我不是純粹主義者,我只是想了解我的選擇。

+0

['Here''](http://stackoverflow.com/questions/21067774/is-accessing-the-viewmodel-in-code-behind-always-violating-the-mvvm-pattern/21067879#21067879)I寫了一個答案,它引用了'ViewModel'中事件的使用。 –

回答

2

A RoutedEvent是一個UI元素,在視圖模型中沒有位置。就我個人而言,我無法真正看到將bool財產從true更改爲false,然後再次返回true ...... 這樣做的正當理由。如果你感到困擾,那麼就隱藏掉的方法和調用來代替:

private StartSearchedItemNotFoundAnimation() 
{ 
    SearchedItemNotFound = false; 
    SearchedItemNotFound = true; 
} 

有幾乎不使用任何更復雜和/或昂貴的方式來複制你已經有功能的任何點。

相關問題