...
<igDP:XamDataGrid … FieldLayoutInitialized="XamDataGrid1_FieldLayoutInitialized" />
...
xamComboEditor を使用して、xamDataGrid の Field 内に項目のドロップダウン リストをエンド ユーザーに提示します。xamDataGrid 内で使用するために xamComboEditor を移植するための推奨されるアプローチは、 ComboBoxItemsProvider オブジェクトをリソースとして作成し、マークアップ拡張を使用して参照することです。このパターンは、xamDataGrid の Field 内で ComboBoxItemsProvider オブジェクトの単一インスタンスを再利用することによりオーバーヘッドを最小限に抑えます。
プロシージャー コードを使用して、Field のエディターを xamComboEditor に設定します。
xamDataGrid の FieldLayoutInitialized イベントのイベント ハンドラを接続します。
XAML の場合:
...
<igDP:XamDataGrid … FieldLayoutInitialized="XamDataGrid1_FieldLayoutInitialized" />
...
Resources セクションを Window で作成します。
XAML の場合:
...
<Window.Resources>
</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>
...
コード ビハインドで using/imports のディレクティブを追加します。
Visual Basic の場合:
Imports Infragistics.Windows.DataPresenter
Imports Infragistics.Windows.Editors
C# の場合:
using Infragistics.Windows.DataPresenter;
using Infragistics.Windows.Editors;
FieldLayoutInitialized イベントを処理するメソッドを作成します。
Visual Basic の場合:
Private Sub XamDataGrid1_FieldLayoutInitialized(ByVal sender As Object, _
ByVal e As _
Infragistics.Windows.DataPresenter.Events.FieldLayoutInitializedEventArgs)
End Sub
C# の場合:
private void XamDataGrid1_FieldLayoutInitialized(object sender,
Infragistics.Windows.DataPresenter.Events.FieldLayoutInitializedEventArgs e)
{
}
FieldLayoutInitialized イベント ハンドラで Field
オブジェクトのインスタンスを作成します。
Fields コレクションにインデックスを付けるためにキーとして使用できるように、 Name プロパティを設定する必要があります。BindingType
プロパティを Unbound
に設定します。Field の上のヘッダーにテキストを表示するために Label
プロパティを設定することも可能です。
Visual Basic の場合:
Dim uField as New Field()
uField.Name = "rating"
uField.Label = "Rating"
uField.BindingType = BindingType.Unbound
C# の場合:
Field uField = new Field();
uField.Name = "rating";
uField.Label = "Rating";
uField.BindingType = BindingType.Unbound;
非バインド フィールド オブジェクトを FieldLayout の Fields コレクションに追加します。
Visual Basic の場合:
e.FieldLayout.Fields.Add(uField)
C# の場合:
e.FieldLayout.Fields.Add(uField);
xamComboEditor をターゲットとする Style オブジェクトのインスタンスを作成します。
Visual Basic の場合:
Dim xamComboEditorStyle As New Style(GetType(XamComboEditor))
C# の場合:
Style xamComboEditorStyle = new Style(typeof(XamComboEditor));
xamComboEditor の ItemsProviderProperty プロパティを手順 3 で作成した ComboBoxItemsProvider リソースに設定する Setter のインスタンスを作成します。
Visual Basic の場合:
Dim itemsProviderSetter As New Setter(XamComboEditor.ItemsProviderProperty, Me.FindResource("cbipRatings"))
C# の場合:
Setter itemsProviderSetter = new Setter(XamComboEditor.ItemsProviderProperty, this.FindResource("cbipRatings"));
手順 9 で作成した Style オブジェクトの Setters コレクションに Setter オブジェクトを追加します。
Visual Basic の場合:
xamComboEditorStyle.Setters.Add(itemsProviderSetter)
C# の場合:
xamComboEditorStyle.Setters.Add(itemsProviderSetter);
非バインド フィールドの FieldSettings オブジェクトの EditorStyle プロパティを作成したばかりの Style に設定します。
Visual Basic の場合:
uField.Settings.EditorStyle = xamComboEditorStyle
C# の場合:
uField.Settings.EditorStyle = xamComboEditorStyle;
プロジェクトを実行します。'Rating' というラベルの Field で Cell をクリックし、xamComboEditor コントロールを使用して Cell の値を編集します。