是否有辦法將觸發器(和後續動畫)附加到具有屬性數據綁定的控件,並在該數據綁定屬性的值發生更改時觸發該觸發器(到任何值)。我不在乎它有什麼價值,我只是想在價值改變的時候顯示一個通知。當數據綁定屬性更改爲* any *時顯示動畫值
可能很明顯,但我沒看到它。
是否有辦法將觸發器(和後續動畫)附加到具有屬性數據綁定的控件,並在該數據綁定屬性的值發生更改時觸發該觸發器(到任何值)。我不在乎它有什麼價值,我只是想在價值改變的時候顯示一個通知。當數據綁定屬性更改爲* any *時顯示動畫值
可能很明顯,但我沒看到它。
最簡單的方法是在您手動引發的ViewModel中爲此添加一個額外的事件,並將您的EventTrigger綁定到該事件上。你有一個ViewModel,不是嗎? ;)
要做到這一點完全在XAML中,你需要使用一個EventTrigger,但請記住:
可以使用。如果目標是觸發關閉綁定,您可以使用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事件。
嗯,是的。我曾想到過,但我想看看是否有更通用的方法。 另外:需要一些額外的事件的眼睛糖果:糟透了。 – Inferis 2010-06-01 12:56:01