2011-06-07 113 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()); 
    } 
} 
相關問題