我有下面的DataGrid單元格,我想在底層的LastTradePrice
屬性更改其值時儘快對其背景顏色進行動畫處理。如何在更新的ViewModel屬性上數據觸發動畫?
<DataGridTextColumn Header="Last Trade Price" Binding="{Binding LastTradePrice}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
// ???
<DataTrigger Binding="{Binding LastTradePrice}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation To="Aqua" Duration="0:0:0.3" Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
1)線<DataTrigger Binding="{Binding LastTradePrice}" Value="True">
是沒有意義雖然。
財產LastTradePrice
顯然不是一個布爾值與value = True
測量。每當屬性更新時我該如何觸發觸發器?很顯然,我已經INotification實現:
public double LastTradePrice
{
get { return _model.LastTradePrice; }
set
{
if (value != _model.LastTradePrice)
{
LastTradePrice = value;
OnPropertyChanged("LastTradePrice");
}
}
}
2)如果我把裏面存放<Window.Resources>
整體風格的定義,如何將我已訪問的ViewModels財產LastTradePrice
?
非常感謝
Check [this](http://social.msdn.microsoft.com/Forums/en-US/cf65af63-07b2-47e3-a348-1fb8b4e09923/run-animation-each-time-an-inotifypropertychanged-property-更改?forum = wpf)鏈接。想法是它會在'Binding.TargetUpdated'事件上觸發動畫。我已經測試過它,它的工作原理,但它也觸發動畫初始值綁定。 – dkozl
我喜歡這個解決方案。它使用'EventTrigger',並且ViewModel中不需要更改代碼。如果你喜歡,你可以擴展這個答案,或者我也可以做。 :) – Houman
當然。我可以將我的例子作爲答案。 – dkozl