У меня интересный вопрос о привязке данных, связанный с выпадающим списком. Надеюсь, у кого-то есть хорошее предложение.
У меня есть простая форма, она содержит средство выбора файлов и поле со списком. Каждый раз, когда файл выбирается, я считываю список строк из файла в объект List и устанавливаю comboBox.DataSource = listOfStrings.
В событии загрузки формы я устанавливаю comboBox.DataBindings.Add ("SelectedItem", myObject, "PickedValue");
Цель ясна: каждый раз, когда строка выбирается в выпадающем списке, я хочу записать строку в myObject.PickedValue.
Вот и вся история.
Теперь я запускаю форму, вместо того, чтобы выбрать файл, сначала проверяю поле со списком. Конечно, в этот момент comboBox.DataSource имеет значение null, comboBox.SelectedItem также имеет значение null. Но привязка данных в comboBox уже настроена (так как настройка находится в событии загрузки формы). Теперь мой фокус не может быть перемещен из выпадающего списка в другое место.
Я думаю, причина в том, что когда я пытаюсь проверить комбинированный список, он имеет значение nulected SelectedItem. Когда я пытаюсь переместить фокус в другое место, происходит привязка данных в выпадающем списке. В основе лежит попытка преобразовать выбранный элемент в строку и обновить myObject.PickedValue этой преобразованной строкой. Поскольку вы не можете преобразовать значение NULL в строку, проверка привязки данных завершается неудачно, и механизм проверки не позволяет переместить мой фокус в другое место, и я в этот момент не могу даже выбрать файл.
У меня вопрос: каков нормальный рабочий процесс настройки привязки для сценария моего приложения, чтобы предотвратить эту ловушку? Каков правильный порядок установки такой привязки данных, чтобы я мог проверить свой комбинированный список, прежде чем его источник данных будет заполнен чем-то?
К вашему сведению, я пытался привязать myObject.PickedValue к свойству SelectedText поля со списком (я заметил, что SelectedText является строкой и никогда не будет нулевым, даже когда SelectedItem равен нулю). Но, что интересно, даже если я выберу что-то из выпадающего списка, SelectedText все равно будет пустой строкой, когда сработает привязка данных. Что здесь не так?
Спасибо за любую помощь.