wpf - feuert den Datentrigger, wenn sich die Eigenschaft unabhängig vom neuen Wert ändert
Ich versuche zum ausführen einer animation auf eine Zelle in einem datagrid, wenn der Wert des datagrid-Zelle ändert.
Datagrid selbst ist gebunden an eine ObservableCollection von plain old CLR objects. In diesem Fall können sagen, dass die Objekte "Person" Objekte mit Eigenschaften, die für 'Vorname', 'Nachname' und 'Alter'. Die "Person" Klasse die INotifyPropertyChanged-Schnittstelle implementiert, und jede Eigenschaft hat den entsprechenden Aufruf von onPropertyChanged im setter.
Dies ist alles in Ordnung. In der datagrid-definition habe ich meine DataTemplate für die Zeichnung jede Zelle und an einen datatrigger zu ... wie folgt:
<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>
Wenn ein Objekt in meiner ObservableCollection ist aktualisiert (ich änderte den Wert für FirstName) das datagrid aktualisiert in Ordnung. Gemäß dem obigen Beispiel, wenn ich änderte den Wert von FirstName, 'Richard', dann wird die animation ausgeführt wird, auch in Ordnung.
Mein problem ist, dass ich brauche, um mein animation unabhängig davon, was der neue Wert von Firstname. Ich habe durchforstet das web, aber einige weit nur scheinen, Beispiele zu finden und dem auslösen des trigger gegen einen bekannten Wert z.B. Feuer auslösen FirstName 'Richard', wie ich demonstriert habe, in meinem Beispiel.
Meine Frage ist, wie kann ich das Feuer der datatrigger, unabhängig von dem Wert der aktualisierten Eigenschaft? Also im Grunde, wie kann ich das Feuer der datatrigger, wenn die FirstName-Eigenschaft aktualisiert wird, für eine bestimmte Zeile im datagrid.
Vielen Dank.
InformationsquelleAutor der Frage Peanut | 2011-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Durch die Zeiger aus der gewonnenen Antworten auf diese Frage fand ich die Antwort zu nutzen, um ein EventTrigger und die TargetUpdated RoutedEvent.
Jenseits der Ereignisauslöser, die einzige andere Sache, die erforderlich war, war 'NotifyOnTargetUpdated=True' bei der Einstellung der Bindung für den textblock.
Dank.
InformationsquelleAutor der Antwort Peanut
Es sieht aus wie Sie brauchen ein EventTrigger "X zu tun, wenn ein Ereignis Eintritt" statt mit einem DataTrigger.
Nicht versucht, diese selbst.. aber es sollte möglich sein, erhöhen Sie Ihr benutzerdefiniertes Ereignis FirstNameChanged und trigger-Aktionen ausgeführt werden, die in Reaktion auf, die.
InformationsquelleAutor der Antwort Gishu
InformationsquelleAutor der Antwort Bathineni
Sie könnten versuchen, Einstellung der DataContext der TextBlock, der auf die FirstName-Eigenschaft, und verwenden Sie dann die DataContextChanged Veranstaltung.
Oder verwenden Sie den PropertyChanged event und filter für die Immobilie, die Sie wollen.
Entweder Weg, ich denke du gehst zu haben, um eine event.
InformationsquelleAutor der Antwort Ray
Konnte Sie hack etwas mit einem Wert Konverter?
und
Ich denke, es hängt davon ab, ob WPF ruft den Konverter auf jede Eigenschaft ändern, oder ob es wertet zuerst den Wert. Ich habe es nicht ausprobiert, es ist nur ein Gedanke...
InformationsquelleAutor der Antwort MarcE