WPF DataBinding с простой арифметической операцией?

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
15
задан jamesdgb 31 December 2013 в 14:24
поделиться

3 ответа

Я полагаю, что можно сделать это с преобразователем значения. Вот запись в блоге , который адресует передачу параметра к преобразователю значения в xaml. И этот блог предоставляет некоторую подробную информацию реализации преобразователя значения.

7
ответ дан 1 December 2019 в 02:02
поделиться

Используя значение преобразователь является хорошим решением проблемы, поскольку это позволяет Вам изменять исходное значение, поскольку это связывается с UI.

я использовал следующее в нескольких местах.

public class AddValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        object result = value;
        int parameterValue;

        if (value != null && targetType == typeof(Int32) && 
            int.TryParse((string)parameter, 
            NumberStyles.Integer, culture, out parameterValue))
        {
            result = (int)value + (int)parameterValue;
        }

        return result;
    }

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

Пример

 <Setter Property="Grid.ColumnSpan"
         Value="{Binding 
                   Path=ColumnDefinitions.Count,
                   RelativeSource={RelativeSource AncestorType=Grid},
                   Converter={StaticResource addValueConverter},
                   ConverterParameter=1}"
  />
5
ответ дан 1 December 2019 в 02:02
поделиться

Я никогда не использовал WPF, но у меня есть возможное решение.

Ваша привязка может Соединить карту каналом к Карте? Если так, это должно тогда быть в состоянии взять аргумент (ключ). Необходимо было бы создать класс, который реализует интерфейс Map, но действительно просто возвращает основное значение, что Вы инициализировали "Карту" с добавленным к ключу.

public Integer get( Integer key ) { return baseInt + key; }  // or some such

Без некоторой способности передать число от тега, я не вижу, как Вы собираетесь заставить это возвращать различные дельты из исходного значения.

0
ответ дан 1 December 2019 в 02:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: