[WPF][XAML] DataGrid に ComboBox を配置する

2013年12月15日

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





カテゴリー: Program, VB.NET, WPF, xaml

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org