DataGridコントロール

 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>


超多機能のアクセス解析が永久無料!

コメント:



(画像の文字列を入力して下さい)

トップ   編集 凍結解除 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:35:53 (1628d)

PCpዾyǗlgĂ܂}WŔ܂z 萔O~ył񂫁z Yahoo yV NTT-X Store

z[y[W ̃NWbgJ[h COiq ӂ邳Ɣ[ COsیI COze