xmlns:igEditors="http://infragistics.com/Editors"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xamComboEditor を使用して、xamDataGrid の Field 内に項目のドロップダウン リストをエンド ユーザーに提示します。xamDataGrid 内で使用するために xamComboEditor を移植するための推奨されるアプローチは、 ComboBoxItemsProvider オブジェクトをリソースとして作成し、マークアップ拡張を使用して参照することです。このパターンは、xamDataGrid の Field 内で ComboBoxItemsProvider オブジェクトの単一インスタンスを再利用することによりオーバーヘッドを最小限に抑えます。
Cell 値を編集するために xamComboEditor を使用する xamDataGrid に 非バインド フィールドを追加します。
開始の Window タグ内で以下の XML 名前空間宣言を追加します。
XAML の場合:
xmlns:igEditors="http://infragistics.com/Editors"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Resources セクションを Window で作成します。
XAML の場合:
<Window.Resources>
<!--TODO: ここで ComboBoxItemsProvider を追加します-->
</Window.Resources>
ComboBoxItemsProvider を Resources セクションに追加し、後で参照できるようにキーを指定します。
XAML の場合:
...
<igEditors:ComboBoxItemsProvider x:Key="cbipRatings">
<!--TODO: ここで ComboBoxDataItems を追加します-->
</igEditors:ComboBoxItemsProvider>
...
5 つの ComboBoxDataItem オブジェクトを ComboBoxItemsProvider オブジェクトの Items コレクションに追加します。
各 ComboBoxDataItem オブジェクトの DisplayText プロパティと Value プロパティを設定することが必要になります。DisplayText プロパティはエンドユーザーに表示するテキストを決定し、Value プロパティは基となるデータ モデルだけでなく Cell の Value プロパティに保存される値を決定します。
XAML の場合:
...
<igEditors:ComboBoxItemsProvider.Items>
<igEditors:ComboBoxDataItem DisplayText="5 Stars" Value="5 Stars" />
<igEditors:ComboBoxDataItem DisplayText="4 Stars" Value="4 Stars" />
<igEditors:ComboBoxDataItem DisplayText="3 Stars" Value="3 Stars" />
<igEditors:ComboBoxDataItem DisplayText="2 Stars" Value="2 Stars" />
<igEditors:ComboBoxDataItem DisplayText="1 Star" Value="1 Star" />
</igEditors:ComboBoxItemsProvider.Items>
...
FieldLayout を xamDataGrid に追加します。
XAML の場合:
...
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout>
<!--TODO: ここで Fields コレクションのタグを追加します-->
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
...
FieldLayout オブジェクトの Fields コレクションのタグを追加します。
XAML の場合:
...
<igDP:FieldLayout.Fields>
<!--TODO: ここでフィールドと非バインド フィールドを追加します-->
</igDP:FieldLayout.Fields>
...
"unbound" バインディング タイプを持つフィールドを FieldLayout オブジェクトの Fields コレクションに追加します。
XAML の場合:
...
<igDP:Field Name="rating" Label="Rating" BindingType="Unbound">
<!--TODO: ここに FieldSettings オブジェクトを追加します-->
</igDP:Field>
...
FieldSettings オブジェクトを以前の手順で作成した非バインド フィールドに追加します。
Field の EditorType プロパティは、その Field で Cell が編集モードに移る時に使用するエディターを決定します。
XAML の場合:
...
<igDP:Field.Settings>
<igDP:FieldSettings EditorType="{x:Type igEditors:XamComboEditor}">
<!--TODO: エディター プロパティを設定するには、ここで EditorStyle を追加します-->
</igDP:FieldSettings>
</igDP:Field.Settings>
...
xamComboEditor をターゲットとする Style に FieldSettings オブジェクトの EditorStyle プロパティを設定します。
XAML の場合:
...
<igDP:FieldSettings.EditorStyle>
<Style TargetType="{x:Type igEditors:XamComboEditor}">
<!--TODO: エディター プロパティを設定するには、ここで Setters を追加します-->
</Style>
</igDP:FieldSettings.EditorStyle>
...
xamComboEditor の ItemsProvider プロパティを設定する Setter を追加します。
setter の Value プロパティはマークアップ拡張を使用して、手順 3 で作成した ComboBoxItemsProvider オブジェクトを参照します。
XAML の場合:
...
<Setter Property="ItemsProvider" Value="{StaticResource cbipRatings}" />
...
プロジェクトを実行して、Orders.xml ファイルにバインドされた Fields とともに、Rating というタイトルが付けられたバインドされていない Field が表示されます。Rating というタイトルが付けられたバインドされていない Field で Cell をクリックして、項目のドロップダウン リストを表示します。以下のスクリーンショットは、xamComboEditor によって提供されたレーティングのドロップダウン リストが付けられた xamDataGrid 内の Cell を示します。