再一次,我对 WPF、XAML 和我自己的愚蠢有一点问题;)我有一个绑定到 DataContext 的 DataGrid。DataContext 是我自己创建的一个类中的一个对象数组(像 Employee 类一样简单,具有 FirstName、LastName 等属性......真的没什么特别的。)我想为行创建一个 ToolTip,所以我做了一个 RowStyle我在哪里分配了工具提示。它首先绑定到名为“状态”的属性。以下代码运行良好:
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ToolTip">
<Setter.Value>
<TextBlock Text="{Binding Status Converter={StaticResource StatusToolTipConverter}}"/>
</Setter.Value>
</Setter>
</Style>
</DataGrid.RowStyle>
但后来我改变了主意。我不想只传递“状态”属性,现在我想传递整个对象(记住:一行 = 一个对象)。或者换句话说:我想将行的 DataContext 传递给我的转换器。由于我要传递的 Object 是 DataContext 本身,所以应该没有太大的变化。所以我把它改成:
<TextBlock Text="{Binding Converter={StaticResource StatusToolTipConverter}}"/>
现在事情开始出错了。转换器将“null”作为值。所以我删除了转换器并再次尝试。工具提示已正确绑定到行中的对象。我可以向自己证明这一点,因为工具提示中显示了正确的对象名称。我什至覆盖了 .ToString() 以便员工的姓名显示为对象名称,它在没有转换器的情况下正确执行。
所以 TL;DR:为什么在没有转换器的情况下正确绑定对象时,转换器会获得“null”作为值?