XamDataGrid の ComboBoxField のコンボで使用する ItemsSource にビューモデルのリストをバインドする場合は、下記に記載している FieldBinding を使うと簡単にできます。

モデル

県データを表現するモデルを想定しています。県コードと県名をプロパティとして持っています。

// Prefecture.cs

internal class Prefecture
{
    // 県コード
    public int PrefectureCode { get; set; }

    // 県名
    public String PrefectureName { get; set; }

    // コンストラクター
    public Prefecture()
    {

    }   // End of ctor
}

 

ビューモデル

8 行目、Prefecture のリストを List<Prefecture> 型のプロパティ(プロパティ名は Prefectures )として持っています。

あとで、このプロパティを、MainWindow に置いた XamDataGrid の ComboBoxField の ItemsSource にバインドします。

// MainWindowViewModel.cs

internal class MainWindowViewModel
{
    // ... (省略) ...

    // ComboBoxFieldのコンボの中身に表示する県データ
    public List<Prefecture> Prefectures { get; set; }

    // コンストラクター
    public MainWindowViewModel()
    {
        // 県データの作成
        Prefectures = new List<Prefecture>();
        Prefectures.Add(new Prefecture() { PrefectureCode = 13, PrefectureName = "東京都" });
        Prefectures.Add(new Prefecture() { PrefectureCode = 27, PrefectureName = "大阪府" });

        // ... (省略) ...
    }   // End of ctor
}

 

ビュー

XamDataGrid 部分のみを抜粋しています。

9 行目、ComboBoxField の ItemsSource に MainWindowViewModel の Prefectures プロパティをバインドしています。

<!-- MainWindow.xaml -->

<igDP:XamDataGrid ...>
    <igDP:XamDataGrid.FieldLayouts>
        <igDP:FieldLayout>
            <igDP:FieldLayout.Fields>
                <igDP:ComboBoxField
                    Name="PrefectureCode" Label="県名"
                    ItemsSource="{igDP:FieldBinding Prefectures}"
                    ValuePath="PrefectureCode"
                    DisplayMemberPath="PrefectureName"/>
            </igDP:FieldLayout.Fields>
        </igDP:FieldLayout>
    </igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>

 

結果

「県名」のドロップダウンに県のリストが表示されました!

 

サンプル

 

Tagged: