我再次遇到WPF,XAML和我自己的愚蠢问题;) 我有一个绑定到DataContext的DataGrid。 DataContext是一个来自我自己创建的类的对象数组(像Employee一样简单,类似于FirstName,LastName等属性......真的没什么特别的。) 我想为行创建一个ToolTip,所以我创建了一个RowStyle,我在其中分配了ToolTip。它首先绑定到名为“Status”的属性。以下代码工作正常:
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ToolTip">
<Setter.Value>
<TextBlock Text="{Binding Status Converter={StaticResource StatusToolTipConverter}}"/>
</Setter.Value>
</Setter>
</Style>
</DataGrid.RowStyle>
然后我改变了主意。我不想只传递“Status”属性,现在我想传递整个Object(记住:一行=一个对象)。或者换句话说:我想将行的DataContext传递给我的转换器。由于我想要传递的Object是DataContext本身,因此不应该有太多变化。所以我把它改成了:
<TextBlock Text="{Binding Converter={StaticResource StatusToolTipConverter}}"/>
现在这里出现了问题。转换器的值为“null”。所以我删除了转换器并再次尝试。 ToolTip已正确绑定到Row中的Object。我可以向自己证明,因为工具提示中显示了正确的对象名称。我甚至覆盖了.ToString(),以便Employee的名称显示为对象名称,它在没有转换器的情况下正确执行。
所以TL; DR:当没有转换器正确绑定Object时,为什么转换器的值为'null'?
答案 0 :(得分:-1)
我找到了一点解决方法。我制作了一个名为'Self'的属性,它返回'this'。工具提示现在绑定到“自我”。它有效。