在单元格条目上选择所有Silverlight DataGrid单元格文本

时间:2011-06-07 12:16:00

标签: silverlight datagrid textbox selectall

我在SL4中有一个带有简单DataGridTextColumn列的DataGrid。

一旦单元格变为可编辑的TextBox,我就尝试了许多不同的方法来选择DataGridCell中的所有文本。

以下代码是我的最后一次尝试。

在debug中检查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();
                    }
                };
        }
    }

如何保持文本选择并向用户显示带有所选文本的TextBox?

P.S。我正在使用Cliburn.Micro附加PreparingCellForEdit事件。

2 个答案:

答案 0 :(得分:2)

对我来说更好的是:

public void PreparingCellForEdit(DataGridPreparingCellForEditEventArgs e)
{
    var textBox = e.EditingElement as TextBox;
    if (textBox != null)
    {
        textBox.Dispatcher.BeginInvoke(() => textBox.SelectAll());
    }
}

答案 1 :(得分:0)

有些解决方法是在附加到TextBox事件后强制关注GotFocus

像这样:

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