我在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事件。
答案 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();
}
}