0

もう一度、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」を取得するのはなぜですか?

4

1 に答える 1

-1

少し回避策を見つけました。「this」を返す「Self」というプロパティを作成しました。ToolTip が「Self」にバインドされました。できます。

于 2013-07-18T12:45:38.633 に答える