2016-05-30 4 views
1

Szenario: Ich habe 2 Gitter. 1 ist Elternteil und 2nd ist Kind. In jeder Zeile Mouseover rufe ich einen Konverter an. Wenn Record in Parent ausgewählt ist, werden die nachfolgenden untergeordneten Datensätze im Child-Grid angezeigt. Beim Mouseover der Child-Zeile wird Converter aufgerufen.Call Converter Selbst wenn der Zieleigenschaftswert nicht geändert wird

Problem: Das Problem, mit dem ich konfrontiert bin, ist, dass mehrere Eltern Datensätze dasselbe Kind haben könnten. Ich möchte Converter gewaltsam aufrufen, wenn chid für verschiedene Eltern angezeigt wird, aber wenn Kind gleich ist, hat es den Konverter nicht aufgerufen, da die Zieleigenschaft nicht geändert wurde.

Beispiel: Grid 1 hat Eltern-Datensatz A und B. Datensatz A hat 2 Childs.

Rekord A: 1) Comman Kinder

Rekord B: 1) Gemeinsames Kind 2) Aufnahme B Child

Auf Zeile A auswählen und dann Onmouseover gemeinsames Kind ruft den Konverter. Wenn Datensatz B ausgewählt ist, ruft er Konverter nur für Datensatz B Child und nicht für Common Child auf. Da der Wert nicht geändert wird.

PS: Childs werden in ChildsObservableCollection platziert und in der Auswahl filtercollection wird von childObservableCollection gefüllt. filtercollection ist an das Child-Grid gebunden.

Ich weiß, dass es das Standardverhalten des Konverters ist, dass es nur aufgerufen wird, wenn der Zieleigenschaftswert geändert wird, aber hier möchte ich den Konverter beim Row-Binding/Changing gewaltsam aufrufen. Irgendeine Idee? Vielen Dank im Voraus.

Antwort

0

Sie können versuchen, Bindungsziel verbindlich zu aktualisieren. Ich habe ein Beispiel mit TextBlocktbTest geschrieben.

<TextBlock Name="tbTest" Text="{Binding TestInt, Converter={StaticResource intToStr}}" /> 

Code hinter aussehen wie folgt. UpdateTarget() verursacht Conveter.Convert Anruf.

var bindingExpression = tbTest.GetBindingExpression(TextBlock.TextProperty); 
bindingExpression.UpdateTarget();