即使目标属性值未更改,也请调用转换器

时间:2016-05-30 07:24:17

标签: c# wpf xaml data-binding converter

场景:我有2个网格。 1是父母,2是孩子。鼠标悬停在每一行上我都在调用转换器。当选择父级记录时,后续子记录将显示在子网格中。在子行的鼠标悬停时,它调用转换器。

问题:我面临的问题是多个父母的记录可能有同一个孩子。我想在为不同父级显示chid时强行调用converter,但是当child相同时,它没有调用转换器,因为目标属性没有被更改。

示例:网格1有父记录A和B.记录A有2个子节点。

记录A:1)Comman Child

记录B:1)普通儿童2)记录B儿童

选择行A然后onmouseover普通子调用转换器。当选择记录B时,它仅为记录B子项而不是普通子项调用转换器。因为价值没有改变。

PS:将Childs放在ChildsObservableCollection中,并从childObservableCollection中填充选择filtercollection。 filtercollection与子网格有界。

我知道转换器的默认行为是它只在目标属性值改变时被调用,但在这里我想在行绑定/更改时强制调用转换器。任何的想法? 在此先感谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试强制更新绑定目标。我用TextBlock tbTest写了一些例子。

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

背后的代码看起来像这样。 UpdateTarget()会导致Conveter.Convert致电。

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