我嘗試在datagrid單元格的值發生更改時,在datagrid中的單元格上執行動畫。wpf - 當數據屬性更改時觸發數據觸發器,無論新值如何
datagrid本身綁定到一個普通的舊CLR對象的ObservableCollection。在這種情況下,可以說對象是'Person'對象,具有'Firstname','Lastname'和'Age'屬性。 'Person'類實現INotifyPropertyChanged接口,每個屬性都在其setter中對onPropertyChanged進行適當的調用。
這很好。在DataGrid的定義,我把我的DataTemplate中繪製每個單元,並附datatrigger太...如下:
<DataGridTemplateColumn Header="FirstName">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border Name="templateBorder">
<TextBlock Name="templateTextBlock" Text="{Binding Path=FirstName}" />
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=FirstName}" Value="Richard">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard AutoReverse="True">
<DoubleAnimation Storyboard.TargetName="templateTextBlock" Storyboard.TargetProperty="Opacity" To=".1" Duration="0:0:.5" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
當我的ObservableCollection更新了對象時(我改變了名字值)數據網格是更新很好。根據上面的例子,如果我將FirstName的值更改爲'Richard',那麼動畫也會執行得很好。
我的問題是,無論Firstname的新值是什麼,我都需要運行我的動畫。我已經抓取了網頁,但有些內容似乎只能找到觸發某個已知值的例子,例如當我的例子中演示的名字是'Richard'時觸發。
我的問題是我該如何觸發datatrigger而不考慮更新屬性的值?所以,基本上,如何在數據網格中的給定行更新FirstName屬性時觸發數據觸發器。
非常感謝。
爲什麼你不嘗試使用視覺狀態管理器...看到這篇文章。 http://stackoverflow.com/questions/15258199/blend-trigger-vs-wpf-trigger – stromms 2014-11-12 22:03:52