0

再一次,我对 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”作为值?

4

1 回答 1

-1

我找到了一个小解决方法。我创建了一个名为“Self”的属性,它返回“this”。ToolTip 现在绑定到“Self”。有用。

于 2013-07-18T12:45:38.633 回答