Сетка WPF IsEnabled с использованием ValueConverter - PullRequest
0 голосов
/ 10 февраля 2011

У меня есть окно WPF с сеткой и TreeView.Текст данных для сетки привязывается к выбранному элементу в древовидном представлении.Однако, поскольку не все элементы дерева просмотра применимы, я хочу отключить сетку, если элемент дерева просмотра не применим.Итак, я создал конвертер значений, чтобы выполнить нулевую проверку и вернуть bool.(Применимые элементы в этом случае не будут нулевыми)

Проблема в том, что преобразователь значений никогда не используется.Я устанавливаю точки разрыва, и они никогда не бьют.У меня есть другие конвертеры значений, которые я использую, и они все прекрасно работают.

Есть ли что-то, чего мне не хватает?

<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
}

1 Ответ

5 голосов
/ 10 февраля 2011

Это потому, что вы связываете DataContext с тем же значением, что и привязка IsEnabled. Так что для IsEnabled он фактически ищет MyVal.MyVal. Заменить на:

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

Также, если у вас есть проблемы с привязкой, проверьте в окне вывода режима отладки наличие ошибок привязки.

...