DataGridコントロール内でComboBoxコントロールを用いるデータのバインディングを紹介します。 ここでは車を例として、車の色リストを取得するため「Car」というクラスを作成します。 /// <summary> /// 車色のリスト /// </summary> public class CarColorList { //この変数は必ずstaticとして宣言する private static List<CarColor> _colorList = null; public CarColorList() { } public List<CarColor> ColorList { get { return _colorList; } } } /// <summary> /// 車を定義するクラス /// </summary> public class Car { public CarColor Color { get; set; } public int TopSpeed { get; set; } } /// <summary> /// 車の色を定義するクラス /// </summary> public class CarColor { public int ID { get; set; } public string Name { get; set; } } XAMLページでは下記のように「Car」クラスの名前空間への参照を定義します。 xmlns:Mylocal ="clr-namespace:SilverlightBusinessApplication1" ユーザーリソースとして、XAMLに宣言します。 <UserControl.Resources> <Mylocal:CarColorList x:Key="CarColorList"> </Mylocal:CarColorList> </UserControl.Resources> プログラムは下記のような、仮の車のリストを取得しました。 List<Car> CarList = (車のリストを取得する); データモデルによって、XAMLでUIを作成します。 <!-- 現在のDataGridはネストDataGridの場合、「ItemsSource」プロパティの値を設定する必要があります。 --> <sdk:DataGrid ItemsSource="{Binding CarList}" AutoGenerateColumns="False"> <sdk:DataGrid.Columns> <sdk:DataGridTemplateColumn Header="車の色" Width="100" SortMemberPath="CarList.Color"> <!-- 表示する際のスタイル定義、TextBlockコントロールを利用する --> <sdk:DataGridTemplateColumn.CellTemplate > <DataTemplate> <Border> <!-- 現在のDataGridはネストDataGridの場合、「CarList.Color」はList<T>オブジェクト内色リストを表すプロパティ--> <TextBlock Text="{Binding CarList.Color}" Width="Auto" Height="Auto"></TextBlock> </Border> </DataTemplate> </sdk:DataGridTemplateColumn.CellTemplate> <!-- 編集する際のスタイル定義、ComboBoxコントロールを利用する --> <sdk:DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <ComboBox x:Name="ComboBox1" DisplayMemberPath="Name" <!-- 「Color」は「Car」クラスで定義されている車の色リストのプロパティ--> SelectedItem="{Binding Path=Color, Mode=TwoWay}" <!-- 「ColorList」は「CarColorList」クラスで定義されている色リストのプロパティ--> <!-- 「CarColorList」はユーザーリソースで定義されているKeyの名前--> ItemsSource="{Binding ColorList,Source={StaticResource CarColorList}, Mode=TwoWay}" SelectionChanged="ComboBox1_SelectionChanged" /> </DataTemplate> </sdk:DataGridTemplateColumn.CellEditingTemplate> </sdk:DataGridTemplateColumn> </sdk:DataGrid.Columns> </sdk:DataGrid> 超多機能のアクセス解析が永久無料! コメント: |