2010-05-27 33 views
1

是否有辦法將觸發器(和後續動畫)附加到具有屬性數據綁定的控件,並在該數據綁定屬性的值發生更改時觸發該觸發器(到任何值)。我不在乎它有什麼價值,我只是想在價值改變的時候顯示一個通知。當數據綁定屬性更改爲* any *時顯示動畫值

可能很明顯,但我沒看到它。

回答

0

最簡單的方法是在您手動引發的ViewModel中爲此添加一個額外的事件,並將您的EventTrigger綁定到該事件上。你有一個ViewModel,不是嗎? ;)

+1

嗯,是的。我曾想到過,但我想看看是否有更通用的方法。 另外:需要一些額外的事件的眼睛糖果:糟透了。 – Inferis 2010-06-01 12:56:01

2

要做到這一點完全在XAML中,你需要使用一個EventTrigger,但請記住:

  • 一個EventTrigger只能用RoutedEvent

可以使用。如果目標是觸發關閉綁定,您可以使用Binding.TargetUpdated路由事件。爲了引發此事件,您必須將NotifyOnTargetUpdated = True添加到綁定表達式中。現在,每次更新綁定表達式的目標時,都會播放指定的動畫。

<TextBox Text={Binding ... NotifyOnTargetUpdated=True}> 
    <TextBox.Triggers> 
    <EventTrigger RoutedEvent="Binding.TargetUpdated"> 
     <EventTrigger.Actions> 
     <BeginStoryboard> 
      <Storyboard AutoReverse="True" BeginTime="0:0:0" Duration="0:0:0.5"> 
      <ColorAnimation 
       Storyboard.TargetProperty="(TextBox.Background).(SolidColorBrush.Color)" 
       From="White" 
       To="Lavender" 
       /> 
      </Storyboard> 
     </BeginStoryboard> 
     </EventTrigger.Actions> 
    </EventTrigger> 
    </TextBox.Triggers> 
</TextBox> 

此外,您可以通過指定特定事件來改進動畫的觸發方式和時間,而不考慮應用的任何綁定。例如,要僅在Text屬性更改時觸發動畫,請改爲使用TextBox.TextChanged事件。