[Xuni:FlexGrid] タップではなく長押しでセルを編集モードにする方法 (Xamarin.Forms)
対象製品
Xuni
詳細
FlexGridを利用して表示したデータグリッドは、セル内に表示したデータをセル内(インライン)で編集できます。
セルを編集モードにするためには、通常は対象セルをタップします。
簡単に編集モードに入ることを禁止する場合には、セルのタップおよびダブルタップをキャンセルし、長押ししたときのみ編集モードを開始する方法があります。
以下のサンプルコードでは、セルをタップまたはダブルタップした場合には何も発生しませんが、長押しした場合に編集モードになりセル内容を変更できます。
また、セル以外のヘッダー部分は処理の対象外にしています。
サンプルコード
C#(Xamarin.Forms)
Xuni > 技術情報 > ドキュメント > FlexGrid-機能-編集:Android/iOS/Xamarin
セルを編集モードにするためには、通常は対象セルをタップします。
簡単に編集モードに入ることを禁止する場合には、セルのタップおよびダブルタップをキャンセルし、長押ししたときのみ編集モードを開始する方法があります。
以下のサンプルコードでは、セルをタップまたはダブルタップした場合には何も発生しませんが、長押しした場合に編集モードになりセル内容を変更できます。
また、セル以外のヘッダー部分は処理の対象外にしています。
サンプルコード
C#(Xamarin.Forms)
public partial class Xuni_FlexGrid_LongPress : ContentPage { public Xuni_FlexGrid_LongPress() { InitializeComponent(); grid.ItemsSource = Customer.GetCustomerList(10); // グリッドを編集可能状態 grid.IsReadOnly = false; // 列ヘッダーのみ表示する grid.HeadersVisibility = Xuni.Forms.FlexGrid.GridHeadersVisibility.Column; // セル単位に選択するモード grid.SelectionMode = Xuni.Forms.FlexGrid.GridSelectionMode.Cell; // セルをタップおよびダブルタップした場合のイベントを設定 grid.CellDoubleTapped += Grid_CellTapped; grid.CellTapped += Grid_CellTapped; // セルを長押しした場合の処理 grid.CellLongPressed += (object sender, Xuni.Forms.FlexGrid.GridCellRangeEventArgs e) => { // 対象がセルであるかどうかの判断。ヘッダーの場合は対象外 if (e.CellType == Xuni.Forms.FlexGrid.GridCellType.Cell) { // 対象のセルを編集モードにする this.grid.StartEditing(e.CellRange.Row, e.CellRange.Column); } }; } // セルをタップまたはダブルタップした場合のイベントハンドラ void Grid_CellTapped(object sender, Xuni.Forms.FlexGrid.GridCellRangeEventArgs e) { // 対象がセルであるかどうかの判断。ヘッダーの場合は対象外 if (e.CellType == Xuni.Forms.FlexGrid.GridCellType.Cell) { // イベントをキャンセル e.Cancel = true; } } }
Xuni > 技術情報 > ドキュメント > FlexGrid-機能-編集:Android/iOS/Xamarin