Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
9 / 9 / 1
Регистрация: 20.01.2012
Сообщений: 196
1

Привязка в DataGridComboBoxColumn

04.06.2014, 11:01. Показов 3048. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят , помогите пож та разобраться с привязкой в WPF.
У меня есть грид, он связан с коллекцией ObservableCollection класса .
Есть в гриде DataGridComboBoxColumn , в котором необходимо вывести данные их базы.
Это я делаю в коде и все работает:
C#
1
2
test_comboBoxColum.ItemsSource = ds.Tables[0].DefaultView;
                                 test_comboBoxColum.DisplayMemberPath = ds.Tables[0].Columns[0].ColumnName;
Все выводится, но выбранное значение из списка не попадает в объект коллекции.
Незнаю как занести туда выбранное значение
Поможете?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2014, 11:01
Ответы с готовыми решениями:

DataGridComboBoxColumn привязка данных
Всем привет) Возникла проблема с привязкой данных к DataGrid, вот класс - который я пытаюсь...

DataGridComboBoxColumn
Господа выручайте, не получается заполнить DataGridComboBoxColumn, потратил на это уже кучу...

DataGridComboBoxColumn
Такая проблема. есть 3 таблицы Typ, Wertart и таблица Typ_Wertart, таблица Typ_Wertart содержит...

Биндинг DataGridComboBoxColumn
Есть класс public class Manager { public string customer_name { get; set; } ...

11
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
04.06.2014, 12:21 2
А тип у свойства, как я понимаю, вряд ли DataRow?
SelectedValuePath на колонке в помощь.
1
9 / 9 / 1
Регистрация: 20.01.2012
Сообщений: 196
04.06.2014, 12:56  [ТС] 3
Spawn, создала свойство типа DataRow : public DataRow Substance {get;set;}

XML
1
 <DataGridComboBoxColumn  SelectedValuePath ="{Binding  Path=Substance, Source= Script_instance }"   x:Name="test_comboBoxColum"  />
Script_instance - это коллекция ObservableCollection . Все равно не работает. Что я делаю не так?
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
04.06.2014, 13:06 4
Бабочка19, эм, наоборот как бы, т.е. если свойство DataRow, то SelectedValuePath не требуется.
0
9 / 9 / 1
Регистрация: 20.01.2012
Сообщений: 196
04.06.2014, 13:28  [ТС] 5
Spawn, никак не получается.

давайте с начала пож-та. я создала грид grid_script:
Вот привязка в коллекции
C#
1
 grid_script.ItemsSource = Script_instance;
xaml :
XML
1
 <DataGrid  HorizontalAlignment="Stretch"  Name ="grid_script"  CanUserAddRows="True" Grid.Row="1" VerticalAlignment="Stretch"  ItemsSource="{Binding   }" AutoGenerateColumns="False">
Script_instance - коллекция ObservableCollection экземпляров класса Script.
В гриде есть колонка Combobox:
XML
1
<DataGridComboBoxColumn   x:Name="test_comboBoxColum" Header="Вещество"   />
В коде при загрузке кода прописала источник для него :
C#
1
2
3
            DataSet ds= connect.GetDataSet("select name_substance from Substance");            
            test_comboBoxColum.ItemsSource = ds.Tables[0].DefaultView;
            test_comboBoxColum.DisplayMemberPath = "name_substance";
При загрузке все норм отображается в комбобоксе из базы.

В классе есть поле
C#
1
2
3
4
5
6
7
8
9
10
       public string Substance
       {
           get { return _substance; }
           set
           {
               if (_substance == value) return;
               _substance = value;
               OnPropertyChanged("Substance");
           }
       }
Добавила в комбобокс SelectedValuePath ="{Binding Path=Substance }" . Но не получается.
Объяните пож та Как мне записать выбранное значение в него?
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
04.06.2014, 14:24 6
SelectedValuePath - свойство на объекте, который лежит внутри ComboBox, тут привязка не нужна
Также надо задать SelectedValueBinding - это уже привязка у нужному свойству на объекте, для которого мы выбираем значение, т.е. будет как-то так:
XML
1
<DataGridComboBoxColumn SelectedValuePath="Something" SelectedValueBinding="{Binding Substance}"  />
0
9 / 9 / 1
Регистрация: 20.01.2012
Сообщений: 196
04.06.2014, 14:58  [ТС] 7
Spawn, так и сделала.
Привязку к объекту Combobox делала в коде. А привязку к свойству объекта для которого выбираем значение через SelectedValueBinding:
<DataGridComboBoxColumn SelectedValueBinding="{Binding Substance}" x:Name="test_comboBoxColum" Header="Взрывчатое вещество" />
Свойство типа string. В итоге оно получает значение value "System.Data.DataRowView"
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
04.06.2014, 15:35 8
Бабочка19, так у DataRowView нет свойств, точнее там хитрый интерфейс и динамические свойства...
DisplayMemberPath и SelectedValuePath вот так для DataRowView можно задать:
XML
1
DisplayMemberPath="[0]" SelectedValuePath="[1]"
Цифры - номера столбцов соответствующих.

Добавлено через 1 минуту
Мой Вам совет, лучше в WPF не использовать эти типы, они для WinForms больше подходят.
0
9 / 9 / 1
Регистрация: 20.01.2012
Сообщений: 196
04.06.2014, 15:55  [ТС] 9
Spawn, не работает. Не заносит в свойство выбранное значение
C#
1
2
3
            test_comboBoxColum.ItemsSource = ds.Tables[0].DefaultView;
            test_comboBoxColum.DisplayMemberPath = "[0]";
            test_comboBoxColum.SelectedValuePath = "[1]";
теперь мое свойство принимать значение null
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
04.06.2014, 17:18 10
Цитата Сообщение от Бабочка19 Посмотреть сообщение
C#
1
2
3
test_comboBoxColum.ItemsSource = ds.Tables[0].DefaultView;
test_comboBoxColum.DisplayMemberPath = "[0]";
test_comboBoxColum.SelectedValuePath = "[1]";
А SelectedValueBinding чему равно?

И, пожалуй, давайте весь относящийся код, так как у меня на тестовом примере всё работает... специально DataTable сделал
0
9 / 9 / 1
Регистрация: 20.01.2012
Сообщений: 196
05.06.2014, 13:40  [ТС] 11
Добавлено через 4 часа 51 минуту
Spawn, Решила вопрос с помощью TextBinding="{Binding Substance, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
05.06.2014, 13:46 12
Бабочка19, так там же один столбец в этой табличке для ComboBox...
Вот такое тогда решение...
C#
1
2
            test_comboBoxColum.DisplayMemberPath = "[0]";
            test_comboBoxColum.SelectedValuePath = "[0]";
0
05.06.2014, 13:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2014, 13:46
Помогаю со студенческими работами здесь

DataGridComboBoxColumn биндинг
Есть приложение WPF + работа с данными в Code First. Модель public class Person { public...

DataGridComboBoxColumn биндинг
Доброго времени суток! Помогите пожалуйста, завис на одном моменте. Есть следующий код (Id_p это...

Проблемы с DataGridComboBoxColumn
Здравствуйте. Обрисую ситуацию - есть форма с элементом DataGrid, в котором имеются столбцы -...

Заполнение DataGridComboBoxColumn
Добрый день. Одно из полей DataGrid'а DataGridComboBoxColumn: &lt;DataGridComboBoxColumn...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru