Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить способ редактирования колонки 
V
    Опции темы
spartak1501
Дата 3.12.2011, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.10.2011

Репутация: нет
Всего: нет



Как сделать чтобы содержимое колонки wpf DataGrid отображалось в TextBox, а редактировалось в ComboBox?

Примечание!!!
DataGrid выводит двумерный массив, колонки формируются обработчиком AutoGeneratingColumn в ячейки TextBox
Программно добавляется еще один столбец (см. ниже), источником колонок которого я является массив...
При запуске программы выводится массив и рядом пустой столбец... по двойному щелчку мыши по я ячейке этого столбца появляется ComboBox, из него можно выбрать значение массива,
но после перехода на др. ячейку в предыдущей ничего не отображается... 

Код добавления столбца в wpf DataGrid

----------
Код

            DataGridComboBoxColumn box = new DataGridComboBoxColumn();
            box.Header = "Y";
            c_dataGrid.Columns.Add(box);
            
            int[] QuantityLingVar = { 1, 2, 3, 4, 5 };
            box.ItemsSource = QuantityLingVar;


----------
Что в него добавить?

http://s1.ipicture.ru/uploads/20111203/eW4B61no.jpg
http://s1.ipicture.ru/uploads/20111203/7FlIwabE.jpg
http://s1.ipicture.ru/uploads/20111203/9nt27UfF.jpg
http://s1.ipicture.ru/uploads/20111203/ZkA3723W.jpg



Это сообщение отредактировал(а) spartak1501 - 3.12.2011, 18:37
PM MAIL   Вверх
Gvozdin
Дата 3.12.2011, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 9.8.2011
Где: Москва

Репутация: 8
Всего: 8



А куда данные из этой колонки(комбо бокса) попадают? В комбо боксе значение выбрано, а потом комбобокс имсчезает и появляется текст блок, откуда возьмется содержимое текст блока?

SelectedItemBinding думаю надо задать.

http://msdn.microsoft.com/en-us/library/sy...oboxcolumn.aspx
--------------------
http://gvozdin.ru
PM MAIL WWW   Вверх
spartak1501
Дата 3.12.2011, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.10.2011

Репутация: нет
Всего: нет



Выбираются данные в ячейке через ComboBox, а отображаются через TextBox в той же ячейке...

Еще вопрос!!!

Можно ли содержимое всего DataGrid поместить в отдельную коллекцию?
PM MAIL   Вверх
spartak1501
Дата 4.12.2011, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.10.2011

Репутация: нет
Всего: нет



Цитата(Gvozdin @ 3.12.2011,  19:15)
А куда данные из этой колонки(комбо бокса) попадают? В комбо боксе значение выбрано, а потом комбобокс имсчезает и появляется текст блок, откуда возьмется содержимое текст блока?

SelectedItemBinding думаю надо задать.

http://msdn.microsoft.com/en-us/library/sy...oboxcolumn.aspx

Выбираются данные в ячейке через ComboBox, а отображаются через TextBox в той же ячейке...

Еще вопрос!!!

Можно ли содержимое всего DataGrid поместить в отдельную коллекцию?
PM MAIL   Вверх
Gvozdin
Дата 4.12.2011, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 9.8.2011
Где: Москва

Репутация: 8
Всего: 8



Вы наверное не общались до этого с WPF и пытаетесь переложить на него опыт работы с другими гридами и контролами.

Вы создаете пустую колонку не привязанную к данным, то что вы выбираете в комбобоксе в колонке пропадает вникуда когда вы выходите из режима редактирования.

Как вы вообще помещаете данные в грид? Они ведь у вас там как-то отображаются.

Почитайте вообще про работу с WPF и DataGrid в частности:

http://www.i-programmer.info/programming/w...-datagrid-.html
http://www.wpftutorial.net/DataGrid.html

И вот тут конкретно про ComboBoxColumn http://www.c-sharpcorner.com/uploadfile/dp...atagrid-in-wpf/
--------------------
http://gvozdin.ru
PM MAIL WWW   Вверх
spartak1501
Дата 5.12.2011, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.10.2011

Репутация: нет
Всего: нет



Цитата(Gvozdin @  4.12.2011,  22:49 Найти цитируемый пост)
Вы создаете пустую колонку не привязанную к данным, то что вы выбираете в комбобоксе в колонке пропадает вникуда когда вы выходите из режима редактирования.

Как вы вообще помещаете данные в грид? Они ведь у вас там как-то отображаются.


Грид выводит двумерный массив 
Код

c_dataGrid.ItemsSource = BindingHelper.GetBindable2DArray<int>(intArray);

как показано здесь http://stackoverflow.com/questions/4460946...ray-in-datagrid

к этим данным добавляется еще столбец с ComboBox источником которого является массив QuantityLingVar

А после выбора значений во всем столбце ComboBox данные из грида должны построчно добавиться в коллекцию...


Цитата(Gvozdin @  4.12.2011,  22:49 Найти цитируемый пост)
И вот тут конкретно про ComboBoxColumn http://www.c-sharpcorner.com/uploadfile/dp...atagrid-in-wpf/ 


в этом примере прописаны статичные колонки с использованием  DataTemplate в XAML, а у меня динамичная матрица, в который может быть от 2-х до 5-и столбцов и + столбец с ComboBox

Код

        <DataGrid Name="c_dataGrid"
          RowHeaderWidth="0"
          ColumnHeaderHeight="0"
          AutoGenerateColumns="True"
          AutoGeneratingColumn="c_dataGrid_AutoGeneratingColumn" Margin="0,0,225,160">


Код

        private void c_dataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            DataGridTextColumn column = e.Column as DataGridTextColumn;
            Binding binding = column.Binding as Binding;
            binding.Path = new PropertyPath(binding.Path.Path + ".Value");

        }

       c_dataGrid.ItemsSource = BindingHelper.GetBindable2DArray<int>(intArray);

        DataGridComboBoxColumn box = new DataGridComboBoxColumn();
        int[] QuantityLingVar = { 1, 2, 3, 4, 5 };
        box.Header = "Y";
        box.ItemsSource = QuantityLingVar;
        c_dataGrid.Columns.Add(box);



Что можете посоветовать?
PM MAIL   Вверх
Gvozdin
Дата 5.12.2011, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 9.8.2011
Где: Москва

Репутация: 8
Всего: 8



1. Второй раз могу посоветовать прочитать про работу с ComboBoxDataGridcolumn и задать байндинг на ComboBoxDataGridColumn.SelectedItemBinding

2. Если уж редактируете матрицу и значения ячеек редактируете комбо боксами, то сделайте сразу отображение и редактирование ВСЕХ ячеек через ComboBox.
А потом уже управляйте доступом для редактирования на столбцы, строки или даже ячейки отдельные.
А добавление столбцов сделайте по отдельной команде, по которой в исходную матрицу добавляете пустой столбец и разрешаете его редактровать.
Модель предметной области в общем сделайте, а потом уже UI прикручивайте.
--------------------
http://gvozdin.ru
PM MAIL WWW   Вверх
RastaDja
Дата 6.12.2011, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: нет
Всего: 5



Цитата(spartak1501 @  3.12.2011,  22:45 Найти цитируемый пост)
Выбираются данные в ячейке через ComboBox, а отображаются через TextBox в той же ячейке...

  Может не надо TextBox вообще? Создаете ComboBox, с шаблоном, в котором не отображается кнопка (в этом случае он будет выглядеть как TextBox), а при получении фокуса или двойном клике (это как вам больше нравится) кнопка станет видимой и вы получите нужный вам эффект KomboBox-а.


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
spartak1501
Дата 3.1.2012, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.10.2011

Репутация: нет
Всего: нет



Цитата(RastaDja @  6.12.2011,  09:55 Найти цитируемый пост)
Может не надо TextBox вообще? Создаете ComboBox, с шаблоном, в котором не отображается кнопка (в этом случае он будет выглядеть как TextBox), а при получении фокуса или двойном клике (это как вам больше нравится) кнопка станет видимой и вы получите нужный вам эффект KomboBox-а. 


Как это осуществить? Можно небольшой пример...

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0813 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.