我有一個包含一些列的DataGrid。其中之一是模板列。這TemplateColumn中的聲明如下所示:獲取DataGrid中DataGridTemplateColumn中的文本框的文本
<DataGridTemplateColumn Header="First Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding FirstName}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding FirstName}" Loaded="TextBox_Loaded_1"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
要求:
獲取駐留內CellTemplate在一個通用的方法將TextBlock中的文本。
我曾嘗試:
當我按下回車上TemplateColumn中的細胞,我想裏面的TextBlock文本。因此,我使用了DataGrid的PreviewKeyDown事件如下:
private void DataGrid_PreviewKeyDown(.............)
{
If(e.Key == Key.Enter)
{
DependencyObject dep = (DependencyObject)e.OriginalSource;
if(dep != null && dep is DataGridCell)
{
var CellTemplate = ((DataGridCell)dep).Content; //gives me ContentPresenter instead of Textblock
if (CellTemplate is TextBlock)
{
if (((TextBlock)CellTemplate).Text.Trim() == "")
{
//Do whatever I want
}
}
}
}
}
上述代碼返回ContentPresenter而不是TextBlock。爲什麼會發生?
此外,ContentPresenter的內容爲空。
您已經綁定到FirstName,那麼爲什麼不訪問DataContext並只使用FirstName屬性? –
http://stackoverflow.com/questions/16997951/how-to-access-datagrid-template-column-textbox-text-wpf-c-sharp – Sajeetharan
@ d.moncada對不起,由於電力故障遲到的答覆。只要我在一個單元格中輸入一些數據,然後按回車,我想要它的值。那時FirstName屬性是null,所以我不能使用它。 – Vishal