Выделить весь текст ячейки Silverlight DataGrid в ячейке - PullRequest
2 голосов
/ 07 июня 2011

У меня есть DataGrid в SL4 с простыми столбцами DataGridTextColumn.

Я пробовал несколько различных методов, чтобы выделить весь текст в DataGridCell, как только ячейка изменится на редактируемый TextBox.

Код ниже был моей последней попыткой.

Проверка TextBox в отладке показывает, что свойство SelectedText равно свойству Text.Так что проблема не в TextBox.Кажется, что-то отменяет выделение текста позже.

public void PreparingCellForEdit(DataGridPreparingCellForEditEventArgs e)
    {
        var textBox = e.EditingElement as TextBox;
        if (textBox != null && !string.IsNullOrEmpty(textBox.Text))
        {
            textBox.GotFocus += (s, e2) =>
                {
                    {
                        textBox.SelectAll();
                    }
                };
        }
    }

Есть идеи, как сохранить выделенный текст и отобразить текстовое поле с выделенным текстом пользователю?

PS Я использую Cliburn.Micro для прикрепления события PreparingCellForEdit.

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Что лучше для меня работает, так это:

public void PreparingCellForEdit(DataGridPreparingCellForEditEventArgs e)
{
    var textBox = e.EditingElement as TextBox;
    if (textBox != null)
    {
        textBox.Dispatcher.BeginInvoke(() => textBox.SelectAll());
    }
}
0 голосов
/ 03 июля 2011

В некоторой степени решением является принудительная фокусировка на TextBox после присоединения к событию GotFocus.

Как это:

    public void PreparingCellForEdit(DataGridPreparingCellForEditEventArgs e)
    {
        var textBox = e.EditingElement as TextBox;
        if (textBox != null)
        {
            textBox.GotFocus += (s, e2) => textBox.SelectAll();
            textBox.Focus();
        }
    }
...