2011-06-07 86 views
2

我有一个简单的DataGridTextColumn列SL4中的DataGrid。选择单元格条目上的所有Silverlight DataGrid单元格文本

我试过了很多不同的方法,只要单元格更改为可编辑的文本框,就可以选择DataGridCell中的所有文本。

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

检查调试中的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(); 
        } 
       }; 
     } 
    } 

任何想法如何保持选定的文本,并显示文本框与选定的文本给用户?

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

回答

0

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

像这样:

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

什么工作对我来说更好如下:

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