バージョン

行の選択

このトピックでは、XamDataGrid コントロールを使用した行選択の実装プロセスを手順を追って説明します。

このトピックの内容

前提条件

本トピックの理解を深めるために、以下のトピックを参照することをお勧めします。

トピック 目的

このトピックでは、XamDataGrid コントロールをビューに追加してサンプルデータを生成するための基本的な手順を紹介します。

このリソース トピックは、 XamDataGrid コントロールのデータソースを使用したサンプル データの実装を提供します。

概要

XamDataGrid コントロールを使用すると、3 つのモードの行選択が可能になります。これらはすべて SelectionMode プロパティを使用して実装され、XamDataGrid コントロールから公開されます。

  • 単一行 - 単一行の選択

  • 複数行 - 複数行の選択

  • なし - 行の選択を防止

単一行選択:

以下のコード スニペットで、単一行に選択を設定します。

XAML の場合:

<ig:XamDataGrid x:Name="DataGrid" SelectionMode="SingleRow" />

C# の場合:

DataGrid.SelectionMode = GridSelectionMode.SingleRow;
  1. 結果を確認します。XamDataGrid コントロールは、任意の行へのタッチ入力に応答して強調表示による選択を適用します。タッチ入力で別の行が選択されると、その行に強調表示による選択外観が適用されて、現在選択されている行のみがアクティブ外観で表示されます。

次のスクリーンショットは、単一行が選択されたグリッドを示しています。

GridSelectionMode Final 1.png

複数行の選択:

  1. 以下のコード スニペットで、複数行に選択を設定します。

XAML の場合:

<ig:XamDataGrid x:Name="DataGrid" SelectionMode="MultipleRow" />

C# の場合:

DataGrid.SelectionMode = GridSelectionMode.MultipleRow;
  1. 結果を確認します。XamDataGrid コントロールは、任意の数の行へのタッチ入力に応答し、それらに強調表示による選択を適用します。タッチ入力によって、これらの行が再度選択されると、強調表示による選択が解除されます。

以下のスクリーンショットでこの動作を示します。個別の行選択は、前回選択された行とは独立し、複数行に選択外観が同時に適用されることはありません。

GridSelectionMode Final 2.png

選択行での作業

XamDataGrid コントロールを使用すると、選択された行に関連付けられている基本データ ソース オブジェクトへの参照を、次のように取得できます。

メンバー 目的

選択項目のコレクションを返します。

選択項目のキー コレクションを返します。

SelectedItems および SelectedKeys は両方とも、選択された行に関連付けられたキーまたは項目のコレクション全体を解決するため、単一行の選択モードおよび複数行の選択モードに実装できます。

  1. 以下のコードは行選択を有効にします。

C# の場合:

DataGrid.SelectionMode = GridSelectionMode.MultipleRow;
  1. 以下のイベント ハンドラーを追加し、選択項目を反復して項目についての情報をログします。

C# の場合:

DataGrid.SelectedItemsChanged += (s, e) =>
{
    Debug.WriteLine("SelectedItems:");
    for (int i = 0; i < DataGrid.SelectedItems.Count; i++)
    {
        var item = (SampleSalesPerson)DataGrid.SelectedItems[i];
        Debug.WriteLine("index=" + i + " name=" + item.FirstName + " " + item.LastName);
    }
};
  1. 結果を確認します。XamDataGrid コントロールは、任意の行へのタッチ入力に応答し、選択された各行の基本項目に関連付けられた名前と名字がログ コンソールにログされます。この動作を次のスクリーンショットおよびコンソール アウトプットで示します。

SelectedItems:
index=0 name=William Vargas
index=1 name=Oscar Perry
index=2 name=William Perez
index=3 name=Ralph Holmes
index=4 name=Jack Adams
GridSelectionMode Final 3.png

項目別に行を選択

XamDataGrid コントロールを使用すると、 SelectedItems プロパティを使用し、SelectedItems コレクションの操作でプログラムにより行を選択できます。この方法を使用すると、行選択はその行に関連付けられた基本項目をコレクションに追加することで実行できます。

次の例では、SelectedItems プロパティを使用して、プログラムにより行を選択する方法を示します。

  1. 以下のコードは行選択を有効にします。

C# の場合:

DataGrid.SelectionMode = GridSelectionMode.MultipleRow;
  1. XamDataGrid コントロールの ActualDataSource 内のインデックス位置へアクセスして 2 つのオブジェクトを宣言します。

C# の場合:

var item1 = DataGrid.ActualDataSource.GetItemAtIndex(1);
var item2 = DataGrid.ActualDataSource.GetItemAtIndex(2);
  1. SelectedItems コレクションで Add() メソッドを使用して上記の項目オブジェクトを追加します。

  1. ボタンの OnClickListener イベント ハンドラー内で、オブジェクトを宣言し、それを XamDataGrid コントロールの DataSource 内でインデックス位置 2 の項目に設定します。

このパラメーターは、実際の項目参照を含み、参照に関連付けられた行が、XamDataGrid コントロール内で選択されます。

C# の場合:

DataGrid.SelectedItems.Add(item1);
DataGrid.SelectedItems.Add(item2);
  1. V結果を確認します。XamDataGrid コントロールはプログラムで SelectedItems コレクションの項目をルックアップしてインデックスが 1 と 2 の行を選択します。

GridSelectionMode Final 4.png

項目キーで行を選択

XamDataGrid コントロールを使用すると、SelectedKeys プロパティを使用し、SelectedKeys コレクションの操作でプログラムにより行を選択できます。この方法を使用すると、行に関連付けられた基本項目のキーをコレクションに追加することで行の選択が実行できます。この方法は、プログラムによる選択が必要な項目のインスタンスにアクセスできない仮想データソースを取り扱う場合に特に役立ちます。

次の例では、SelectedKeys プロパティを使用して、プログラムにより行を選択する方法を示します。

  1. 以下のコードは行選択を有効にします。

C# の場合:

DataGrid.SelectionMode = GridSelectionMode.MultipleRow;
  1. 以下のコード スニペットは文字列配列のインスタンスをサイズ 2 で作成します。

ここでは、項目の基本パブリック プロパティの 2 つを使用して項目をターゲットにします(この例では FirstNameLastName)。配列の最初のインスタンスには、文字列値 FirstName を割り当て、2 番目のインデックスには LastName の値を割り当てます。

C# の場合:

var propertyArray = new string[2];
propertyArray[0] = "FirstName";
propertyArray[1] = "LastName";
  1. propertyArray を XamDataGrid コントロールの PrimaryKey プロパティ として割り当てます。

C# の場合:

DataGrid.PrimaryKey = propertyArray;
Note
注:

XamDataGrid コントロールの primaryKey が設定されていない場合、オブジェクトのハッシュコードが代わりに primaryKey として使用されます。複数のオブジェクトが同一のハッシュコードを共有している場合、すべてのオブジェクトが同時に選択されます。

  1. 新しい文字列配列のインスタンスをサイズ 2 で宣言し、選択したいデータ項目の値を割り当てます。

Note
注:

例えば、"Kyle" の値をインデックス位置に割り当て、値 "Adams" を 2 番目のインデックス位置に割り当てます。データ項目にこれらの値があることを注意してください。そうでない場合、XamDataGrid コントロールは列を選択しません。

C# の場合:

var primaryKeyArray = new string[2];
primaryKeyArray[0] = "Kyle";
primaryKeyArray[1] = "Adams";
  1. PrimaryKeyValue インスタンスを作成し、propertyArray (一致項目とみなされるパブリック プロパティを記述) および primaryKeyArray インスタンス (一致項目のパブリック プロパティの値が何であるべきかを記述) に渡します。

C# の場合:

var primarykeyValue = new PrimaryKeyValue(propertyArray, primaryKeyArray);
  1. primaryKeyValue を XamDataGrid コントロールの SelectedKeys コレクションに追加します。

C# の場合:

DataGrid.SelectedKeys.Add(primarykeyValue);
  1. 結果を確認します。XamDataGrid コントロールは、プログラムにより、FirstName が "Kyle" と等しく、LastName が "Adams" と等しいデータ項目に関連付けられた行が選択されます。

GridSelectionMode Final 5.png

関連トピック

以下の表は、このトピックに関連するトピックを示します。

トピック 目的

このトピックでは、XamDataGrid コントロールでサポートされる列タイプの情報を提供します。

このトピックでは、XamDataGrid コントロールで列を使用する際のコード例を提供します。