2

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

一旦单元格更改为可编辑的文本框,我尝试了多种不同的方法来选择 DataGridCell 中的所有文本。

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

在调试中检查 TextBox 显示 SelectedText 属性等于 Text 属性。所以问题不在于文本框。似乎有些东西稍后会取消选择文本。

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 显示给用户?

PS 我正在使用 Cliburn.Micro 来附加 PreparingCellForEdit 事件。

4

2 回答 2

2

对我来说更好的是以下内容:

public void PreparingCellForEdit(DataGridPreparingCellForEditEventArgs e)
{
    var textBox = e.EditingElement as TextBox;
    if (textBox != null)
    {
        textBox.Dispatcher.BeginInvoke(() => textBox.SelectAll());
    }
}
于 2011-08-31T13:10:34.420 回答
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();
        }
    }
于 2011-07-03T13:43:23.277 回答