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">