DataGrid の ComboBox に固定のリストを割り当てる例。
ポイントは、DataGridComboBoxColumn には ComboBox (DataGridComboBoxColumn でない普通の ComboBox) にはある、Items プロパティがないので、直接要素が列記できなくて、Array あたりで括っておかないとならない点です。(面倒な…)
<DataGrid AutoGenerateColumns="False"
ItemsSource="{Binding DataGridItems}" >
<DataGrid.Columns>
<DataGridComboBoxColumn SelectedValueBinding="{Binding Choice}">
<DataGridComboBoxColumn.ItemsSource>
<x:Array Type="{x:Type System:String}">
<System:String>あああ</System:String>
<System:String>いいい</System:String>
<System:String>ううう</System:String>
</x:Array>
</DataGridComboBoxColumn.ItemsSource>
</DataGridComboBoxColumn>
<DataGridCheckBoxColumn Binding="{Binding Check}" />
</DataGrid.Columns>
</DataGrid>
上記をテストするプログラムはたとえばこんな。
Class MainWindow
Public Property DataGridItems As New ObjectModel.ObservableCollection(Of DataGridItem)
Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
Me.DataContext = Me
DataGridItems.Add(New DataGridItem)
DataGridItems.Add(New DataGridItem)
End Sub
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
For Each x In Me.DataGridItems
Debug.Print(String.Format("{0} {1}", x.Choice, x.Check))
Next
End Sub
End Class
Public Class DataGridItem
Public Property Choice As String
Public Property Check As Boolean
End Class
あと、System.String を使用するために、clr-namespace:System;assembly=mscorlib を import しておきます。
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"
Title="MainWindow"
Height="350"
Width="525">