1

Grid と TreeView を持つ WPF ウィンドウがあります。グリッドのデータ コンテキストは、ツリー ビューで選択された項目にバインドされます。ただし、すべての treeviewitem が適用できるわけではないため、treviewitem が適用できない場合はグリッドを無効にしたいと考えています。そこで、null チェックを行って bool を返す値コンバーターを作成しました。(この場合、該当する項目は null にはなりません)

問題は、値コンバーターが使用されないことです。ブレークポイントを設定しましたが、ヒットすることはありません。私が使用している他の値コンバーターがあり、それらはすべて正常に機能します。

足りないものはありますか?

<Grid Grid.Column="1" Grid.Row="0" DataContext="{Binding MyVal}" IsEnabled="{Binding MyVal, Converter={StaticResource NullCheckConverter}}" Margin="2,2,2,2">

この質問にとって重要というわけではありませんが、ValueConverter コードは次のとおりです。

internal class NullCheckValueConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return !(value == null);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}
4

1 に答える 1

6

これは、 DataContext を binding と同じ値にバインドするためですIsEnabled。そのためIsEnabled、実際に MyVal.MyVal を探しています。次のように置き換えます。

IsEnabled="{Binding Converter={StaticResource NullCheckConverter}}" 

また、バインドに問題がある場合は、デバッグ モードの出力ウィンドウでバインド エラーを確認してください。

于 2011-02-10T19:54:53.880 に答える