/// <summary>
        /// Begins editing of the given item.
        /// </summary>
        public async Task BeginEditAsync()
        {
            if (AllowEdit && !IsEditing && SelectionMode != TableSelectionMode.None && Selection.Count == 1 && KeyField != null)
            {
                // find item to edit
                var item = ItemsToDisplay.Find(x => KeyField(x).ToString() == Selection[0]);
                if (item != null)
                {
                    // notify and allow for cancel
                    EditItem             = item;
                    _tableBeforeEditArgs = new TableBeforeEditEventArgs <TItem>(EditItem);
                    await InvokeAsync(async() => await BeforeEdit.InvokeAsync(_tableBeforeEditArgs).ConfigureAwait(true)).ConfigureAwait(true);

                    if (!_tableBeforeEditArgs.Cancel)
                    {
                        _editValues.Clear();
                        IsEditing = true;
                        BeginEditEvent.Set();
                        await InvokeAsync(StateHasChanged).ConfigureAwait(true);
                    }
                }
            }
        }
 internal void BeginEdit()
 {
     EditText  = Text;
     IsEditing = true;
     BeginEditEvent.Set();
 }