Как заполннить ComboBox из базы справочника и выбрать по-умолчанию тот что записан?

Не уверенно работаю с WPF. Есть у меня класс модели http://pastebin.com/ACPTvW6u , полученные данные из базы записываю в Лист этого типа - List. И вывожу в DataGrid:

//получаю даные из базы и заполняю
List plavkaList = dal.GetAllPlavka();
dataGrid1.ItemSource = plavkaList;

Всё в принципе хорошо, НО поле catMetal у меня связано с таблицой справочником (где поля id, value) но сейчас просто выводится его id.
Вопрос! Как мне вывести в dataGrid поле catMetal как ComboBox с заполнеными в нем items из базы справочника или сделать DataGrid как ComboBox Dropdown, но при этом чтобы по умолчанию выбирался тот элемент что записан в базе (поле catMetal) ?
  • Вопрос задан
  • 3668 просмотров
Решения вопроса 1
Zerpico
@Zerpico Автор вопроса
Сам разобрался.
Добавил в класс поле ArrayList categoryMetal.
заполняю его при получении данных, затем биньдю его
<mys:DataGridTemplateColumn x:Name="catMetalColumns" Header="Категория металла">
                                <mys:DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <ComboBox x:Name="catMetalDictColumn" ItemsSource="{Binding metalCategory}" SelectedIndex="{Binding catMetal}" />
                                    </DataTemplate>
                                </mys:DataGridTemplateColumn.CellTemplate>
                            </mys:DataGridTemplateColumn>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
HomoLuden
@HomoLuden
Вы хотя бы реализуйте INotifyPropertyChanged в своей модели. Или можно подключить MVVMLight и унаследовать модель от ObservableObject. Иначе у Вас с большой вероятностью будут утечки памяти. Ну и нотификация для биндинга не будет работать, конечно.
Ниже ссылки по теме:
http://blogs.msdn.com/b/jgoldb/archive/2008/02/04/finding-memory-leaks-in-wpf-based-applications.aspx
http://support.microsoft.com/kb/938416/en-us

Осторожнее надо быть с привязкой к классам, не реализующим INotify...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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