2015-05-18 6 views
0

Я довольно новичок в разработке WPF. Я хотел бы создать WPA datagrid со следующими столбцами: столбец CheckBox, столбец «Текст», столбец «кнопка», столбец «Поле списка» и столбец «Выпадающие списки». Мне также нужно добавить слушателей в столбцы столбцов контрольного списка. Я создал то же самое в winforms, используя Infragistics Ultragrid. Это выглядит так:WPat datagrid с checkListBox drop down

Я прочитал о добавлении некоторого настраиваемого элемента управления в datagrid в wpf с помощью DataGridTemplateColumn, но не уверен, как это реализовать. Можно ли использовать шаблон в Combobox и Checklistbox? Пример с коротким кодом был бы замечательным. Должен ли я использовать инфраструктуру infragistics или этот интерфейс можно реализовать с помощью стандартных элементов управления WPF?

Любая помощь по этому вопросу будет оценена по достоинству.

ответ

2

Вы можете выполнить это со стандартными элементами управления WPF. Это одна из самых больших частей WPF - она ​​чрезвычайно гибкая (обычно без особых усилий). Вот пример того, что вы должны получить в правильном направлении:

<DataGrid AutoGenerateColumns="False"> 
       <DataGrid.Columns> 
        <DataGridCheckBoxColumn Header="Selected"/> 
        <DataGridTemplateColumn> 
         <DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
           <Button Content="Click Me!" 
             Command="{Binding myItemCommand}"/> 
          </DataTemplate> 
         </DataGridTemplateColumn.CellTemplate> 
        </DataGridTemplateColumn> 
        <DataGridTextColumn Header="Task" 
             Binding="{Binding TaskText}"/> 
        <DataGridTextColumn Header="Resources" 
             Binding="{Binding ResourcesText}"/> 
        <DataGridComboBoxColumn ItemsSource="{Binding AvailableStatuses}" 
              SelectedItemBinding="{Binding SelectedStatus}" 
              Header="Status" /> 
       </DataGrid.Columns> 
<DataGrid.RowDetailsTemplate> 
    <DataTemplate> 
     <DataGrid ItemsSource="{Binding Resources}"> 
      <DataGrid.Columns> 
       <DataGridCheckBoxColumn Binding="{Binding IsResourceUsed}"/> 
       <DataGridTextColumn Binding="{Binding ResourceName}"/> 
      </DataGrid.Columns> 
     </DataGrid> 
    </DataTemplate> 
</DataGrid.RowDetailsTemplate> 

После того, как вы получите внутри тега, как показано выше, вы можете поместить в значительной степени все, что контролирует внутри него, что вы хотите и они будут повторяться для каждой строки. Связывание для каждого элемента привязывается к любому объекту, который представляет строка, поэтому, если у вас есть список объектов задач, отображаемых вашим DataGrid, каждая задача в этом списке должна иметь свойства для привязки к TaskText, ResourceText и т. Д.

EDIT: Обновлен фрагмент кода, чтобы показать RowDetailsTemplate. Если RowDetailsTemplate с чем-то похожим на другой DataGrid внутри него не выполняет эту работу, вы всегда можете написать свой собственный многопоточный combobox, но он может быть довольно задействован, поскольку по умолчанию у него нет хорошего способа, который я знаю позволяют выбрать несколько элементов.

+0

Похоже, что OP хочет присвоить MV для ресурсов. Но это можно решить и подключить к DataGridTemplateColumn. Pras вы должны спросить о MV combobox в отдельном вопросе. – Paparazzi

+0

Тейлор: Спасибо за ответ. Это позволяет мне начать работу, но столбец «Ресурсы» не является текстом. Он должен быть выпадающим с помощью флажков. Blam: вы правы. Хотя я не уверен, что MV combobox будет иметь этот пользовательский интерфейс окна списка проверок. Скорее всего, это будет combobox с опцией multi select. в любом случае я могу добавить контрольный список в столбец Ресурсы? –

+0

drats! в WPF нет элемента управления checkListBox: '( –

 Смежные вопросы

  • Нет связанных вопросов^_^