![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
Cuguyc |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 22.9.2014 Репутация: нет Всего: нет |
Добрый день.
Никак не получается сделать редактируемый Combobox в DataGrid'е. Точнее заставить его работать правильно. Задача: Создать редактируемый Combobox в DataGrid. При нажатии должен открываться выпадающий список. При вводе текста нужно чтобы выпадающий список сокращался в зависимости от введенных значений. Что бы была возможность как выбирать из выпадающего списка так и вводить значение полностью. И так, что я сделал и что у меня не работает: Код XAML представления: MultiTrigger - помогает открывать выпадающий список по фокусу на комбо бокс В ресурсах соответственно не дает выпадающему списку закрыться при вводе SelectedItem привязка к коллекции Text привязка к свойству Код ViewModel
В моделе только: Весь код не выкладывал, там много лишнего, постарался выложить по максимуму. Проблема в том, что данные не записываются в бд. Если забиндить только SelectedItem, то в принципе работает но если вводишь текст то естественно не сохраняется. Сохраняется только если выбрал из выпадающего списка. Ну и выпадающий список конечно же не сокращается. В свойства по сути заходит, так что проблема не в привязке. коллекция сокращается при вводе, выпадающий список открывается, это работает. Сохранение в базу тоже работает, тут скорее дело в той ереси, что я написал внутри свойств SelectedCurrency и Text. Для работы с бд использую LinqToSQL, класс модели, это партикл класс таблицы грубо говоря. Пожалуйста помогите разобраться, может кто сталкивался с проблемой? P.S. Прошу сильно палками не бейте сам знаю, что много "гомнокода" написал. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ilya81 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Что ComboBox всё ж открывается, даже интересно, обычно я его помещаю в CellEditingTemplate, а не в CellTemplate. Но если setter свойства вызывается, то WPF не связан с сохранением в БД (ибо WPF только вызывает setter указанного в binding свойства). Обновление ObservableCollection точно не приведёт к записи в БД, для этого нужно вызвать методы Attach и Add у DbSet, а потом SaveChanges у DbContext. Запись в БД рекомендую делать не в UI-потоке.
|
|||
|
||||
Cuguyc |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 22.9.2014 Репутация: нет Всего: нет |
Я наверное не правильно написал, в базу всё записывается, но у меня путаница с привязкой текста и selectedItem'a.
Вот очередная попытка сделать чтоб всё работало: код модели:
Код представления:
Я уже что только не пробую... Текст биндится и заходит в поле. Выбранный элемент тоже биндится и заходит в поле и список тоже но всё вместе отрабатывает не правильно Тут я явно косячу в геттерах и сеттерах текста и выбранного элемента, я путаюсь и не понимаю как сделать правильно. Мне надо, чтоб и вводимый текст мог добавляться и выбранный элемент, при всём при этом что бы выбранный элемент нормально отображался. Бывает, что я пишу текст, не дописал, выбираю из списка и всё пропадает к примеру и куча таких мелких косяков и в итоге не корректно работает. В базу добавление нормально отрабатывает, у меня есть проверочная текстовая колонка, там всё норм, комбо бокс тоже добавляется по сути... Добавлено через 3 минуты и 51 секунду Вот кажется, ну задача не из сверхфантастических, просто в таблице должен быть редактируемый комбо бокс с сокращающимся при вводе выпадающим списком, что бы можно было и в ручную полностью записать значение и выбрать... Но не получается как-то... Конечно я не гуру wpf программирования, но я думал что подобная задача не должна составить проблем, однако видимо ошибся. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ilya81 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Стало понятнее, о чём речь. Попробуйте у ComboBox задать значение SelectedValuePath равным "CurrencyVal" (в XAML'е) и поставить binding для свойства SelectedValue (вместо SelectedItem) на строковое свойство.
|
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |