ComboBox. SelectedValue, не обновляющий из обязательного источника

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

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
26
задан Litisqe Kumar 25 September 2015 в 09:37
поделиться

6 ответов

У нас была подобная проблема на прошлой неделе. Это имеет отношение как SelectedValue обновления его внутренности. То, что мы нашли, было то, если бы Вы устанавливаете SelectedValue, это не видело бы изменения, которое мы должны были вместо этого установить SelectedItem, который правильно обновил бы каждую вещь. Мое заключение состоит в том, что SelectedValue разработаны для, добираются , операции и не устанавливают . Но это может просто быть ошибкой в текущей версии 3.5sp1 .net

32
ответ дан SliverNinja - MSFT 28 November 2019 в 06:25
поделиться

Пробежался к чему-то подобному, наконец, я просто подписался на событие SelectionChanged для раскрывающегося списка и установил с ним свойство данных. Глупо и желать этого было не нужно, но это сработало.

3
ответ дан 28 November 2019 в 06:25
поделиться

Разумно ли установить SelectedValuePath = "Content" в xaml выпадающего списка, а затем использовать SelectedValue в качестве привязки?

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

Похоже, Content было бы разумным значением по умолчанию для SelectedValue, но, возможно, это не так?

2
ответ дан 28 November 2019 в 06:25
поделиться

Режим привязки должен быть OneWayToSource или TwoWay, поскольку источник - это то, что вы хотите обновить. Mode OneWay - это Source to Target и, следовательно, делает Source ReadOnly, что приводит к тому, что источник никогда не обновляется.

0
ответ дан 28 November 2019 в 06:25
поделиться

Вы знаете ... Я сегодня много часов борюсь с этой проблемой, и знаете, что я узнал? Это была проблема с DataType! Список, который заполнял ComboBox, был Int64, и я пытался сохранить значение в поле Int32! Никаких ошибок не возникало, просто не сохранялись значения!

0
ответ дан 28 November 2019 в 06:25
поделиться

Чтобы разжечь разговор двухлетней давности:

Другая возможность, если вы хотите использовать строки, - это привязать их к свойству Text поля со списком.

<ComboBox Text="{Binding Test}">
     <ComboBoxItem Content="A" />
     <ComboBoxItem Content="B" />
     <ComboBoxItem Content="C" />
</ComboBox>

Это связано с чем-то вроде:

public class TestCode
{
    private string _test;
    public string Test 
    { 
      get { return _test; }
      set
      {
         _test = value;
         NotifyPropertyChanged(() => Test); // NotifyPropertyChanged("Test"); if not using Caliburn
      }
    }
}

Приведенный выше код является двусторонним, поэтому, если вы установите Test = "B"; в коде в поле со списком будет отображаться «B», а затем, если вы выберете «A» в раскрывающемся списке, связанное свойство отразит изменение.

14
ответ дан 28 November 2019 в 06:25
поделиться
Другие вопросы по тегам:

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