もう一度、WPF、XAML、そしておそらく私自身の愚かさに少し問題があります;) DataContextにバインドされたDataGridがあります。DataContext は、私が作成したクラスからのオブジェクトの配列です (FirstName、LastName などのプロパティを持つクラス Employee のような単純なもの...本当に特別なことは何もありません)。行のツールヒントを作成したかったので、RowStyle を作成しました。ツールチップを割り当てた場所。最初に「Status」という名前のプロパティにバインドされました。次のコードは正常に機能しました。
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ToolTip">
<Setter.Value>
<TextBlock Text="{Binding Status Converter={StaticResource StatusToolTipConverter}}"/>
</Setter.Value>
</Setter>
</Style>
</DataGrid.RowStyle>
しかし、その後気が変わりました。「ステータス」プロパティだけを渡すのではなく、オブジェクト全体を渡したいと思います (覚えておいてください: 1 行 = 1 オブジェクト)。つまり、行の DataContext をコンバーターに渡したいのです。渡したいオブジェクトは DataContext 自体であるため、変更する必要はあまりありません。だから私はそれを次のように変更しました:
<TextBlock Text="{Binding Converter={StaticResource StatusToolTipConverter}}"/>
ここで、問題が発生し始めます。コンバーターは値として「null」を取得します。そのため、コンバーターを削除して、もう一度試しました。ToolTip は、行のオブジェクトに正しくバインドされました。ツールチップに正しいオブジェクト名が表示されたので、それを証明できました。.ToString() を上書きして、従業員の名前がオブジェクト名として表示されるようにしました。これは、コンバーターなしで正しく行われました。
TL;DR: オブジェクトがコンバーターなしで正しくバインドされているのに、コンバーターが値として「null」を取得するのはなぜですか?