<ig:XamDataGrid x:Name="DataGrid" SelectionMode="SingleRow" />
このトピックでは、XamDataGrid コントロールを使用した行選択の実装プロセスを手順を追って説明します。
本トピックの理解を深めるために、以下のトピックを参照することをお勧めします。
XamDataGrid コントロールを使用すると、3 つのモードの行選択が可能になります。これらはすべて SelectionMode プロパティを使用して実装され、XamDataGrid コントロールから公開されます。
単一行 - 単一行の選択
複数行 - 複数行の選択
なし - 行の選択を防止
以下のコード スニペットで、単一行に選択を設定します。
XAML の場合:
<ig:XamDataGrid x:Name="DataGrid" SelectionMode="SingleRow" />
C# の場合:
DataGrid.SelectionMode = GridSelectionMode.SingleRow;
結果を確認します。XamDataGrid コントロールは、任意の行へのタッチ入力に応答して強調表示による選択を適用します。タッチ入力で別の行が選択されると、その行に強調表示による選択外観が適用されて、現在選択されている行のみがアクティブ外観で表示されます。
次のスクリーンショットは、単一行が選択されたグリッドを示しています。
以下のコード スニペットで、複数行に選択を設定します。
XAML の場合:
<ig:XamDataGrid x:Name="DataGrid" SelectionMode="MultipleRow" />
C# の場合:
DataGrid.SelectionMode = GridSelectionMode.MultipleRow;
結果を確認します。XamDataGrid コントロールは、任意の数の行へのタッチ入力に応答し、それらに強調表示による選択を適用します。タッチ入力によって、これらの行が再度選択されると、強調表示による選択が解除されます。
以下のスクリーンショットでこの動作を示します。個別の行選択は、前回選択された行とは独立し、複数行に選択外観が同時に適用されることはありません。
XamDataGrid コントロールを使用すると、選択された行に関連付けられている基本データ ソース オブジェクトへの参照を、次のように取得できます。
SelectedItems および SelectedKeys は両方とも、選択された行に関連付けられたキーまたは項目のコレクション全体を解決するため、単一行の選択モードおよび複数行の選択モードに実装できます。
以下のコードは行選択を有効にします。
C# の場合:
DataGrid.SelectionMode = GridSelectionMode.MultipleRow;
以下のイベント ハンドラーを追加し、選択項目を反復して項目についての情報をログします。
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);
}
};
結果を確認します。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
XamDataGrid コントロールを使用すると、 SelectedItems プロパティを使用し、SelectedItems コレクションの操作でプログラムにより行を選択できます。この方法を使用すると、行選択はその行に関連付けられた基本項目をコレクションに追加することで実行できます。
次の例では、SelectedItems プロパティを使用して、プログラムにより行を選択する方法を示します。
以下のコードは行選択を有効にします。
C# の場合:
DataGrid.SelectionMode = GridSelectionMode.MultipleRow;
XamDataGrid コントロールの ActualDataSource 内のインデックス位置へアクセスして 2 つのオブジェクトを宣言します。
C# の場合:
var item1 = DataGrid.ActualDataSource.GetItemAtIndex(1);
var item2 = DataGrid.ActualDataSource.GetItemAtIndex(2);
SelectedItems コレクションで Add()
メソッドを使用して上記の項目オブジェクトを追加します。
ボタンの OnClickListener イベント ハンドラー内で、オブジェクトを宣言し、それを XamDataGrid コントロールの DataSource 内でインデックス位置 2 の項目に設定します。
このパラメーターは、実際の項目参照を含み、参照に関連付けられた行が、XamDataGrid コントロール内で選択されます。
C# の場合:
DataGrid.SelectedItems.Add(item1);
DataGrid.SelectedItems.Add(item2);
V結果を確認します。XamDataGrid コントロールはプログラムで SelectedItems
コレクションの項目をルックアップしてインデックスが 1 と 2 の行を選択します。
XamDataGrid コントロールを使用すると、SelectedKeys プロパティを使用し、SelectedKeys コレクションの操作でプログラムにより行を選択できます。この方法を使用すると、行に関連付けられた基本項目のキーをコレクションに追加することで行の選択が実行できます。この方法は、プログラムによる選択が必要な項目のインスタンスにアクセスできない仮想データソースを取り扱う場合に特に役立ちます。
次の例では、SelectedKeys プロパティを使用して、プログラムにより行を選択する方法を示します。
以下のコードは行選択を有効にします。
C# の場合:
DataGrid.SelectionMode = GridSelectionMode.MultipleRow;
以下のコード スニペットは文字列配列のインスタンスをサイズ 2 で作成します。
ここでは、項目の基本パブリック プロパティの 2 つを使用して項目をターゲットにします(この例では FirstName
と LastName
)。配列の最初のインスタンスには、文字列値 FirstName
を割り当て、2 番目のインデックスには LastName
の値を割り当てます。
C# の場合:
var propertyArray = new string[2];
propertyArray[0] = "FirstName";
propertyArray[1] = "LastName";
propertyArray を XamDataGrid コントロールの PrimaryKey プロパティ として割り当てます。
C# の場合:
DataGrid.PrimaryKey = propertyArray;
新しい文字列配列のインスタンスをサイズ 2 で宣言し、選択したいデータ項目の値を割り当てます。
C# の場合:
var primaryKeyArray = new string[2];
primaryKeyArray[0] = "Kyle";
primaryKeyArray[1] = "Adams";
PrimaryKeyValue インスタンスを作成し、propertyArray (一致項目とみなされるパブリック プロパティを記述) および primaryKeyArray インスタンス (一致項目のパブリック プロパティの値が何であるべきかを記述) に渡します。
C# の場合:
var primarykeyValue = new PrimaryKeyValue(propertyArray, primaryKeyArray);
primaryKeyValue を XamDataGrid コントロールの SelectedKeys
コレクションに追加します。
C# の場合:
DataGrid.SelectedKeys.Add(primarykeyValue);
結果を確認します。XamDataGrid コントロールは、プログラムにより、FirstName
が "Kyle" と等しく、LastName
が "Adams" と等しいデータ項目に関連付けられた行が選択されます。
以下の表は、このトピックに関連するトピックを示します。