2011-11-01 21 views
2

J'ai une grille de données contenant quatre colonnes.Rechercher une zone de texte dans une grille de données

Donc de ce DataGrid sur le côté C#, je veux trouver la zone de texte particulier name = « caisse de tête »

Comment je vais prendre? mon xaml pour la colonne va comme ci-dessous. Cette section est à l'intérieur Datagrid.Columns qui se trouve dans la balise DataGrid avec name = dgrid

<DataGridTemplateColumn Header="Header"> 
     <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
        <TextBox Name="HeadBox"/> 
     </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

Répondre

2

Je pense que vous pouvez utiliser

DataGridRow row = myDataGrid.ItemContainerGenerator.ContainerFromIndex 
(myDataGrid.SelectedIndex) as DataGridRow; 

var i = 0; /// Specify your column index here. 

EDIT

TextBox ele = ((ContentPresenter)(myDataGrid.Columns[i].GetCellContent(row))).Content as TextBox; 
+0

Non, il ne est une méthode FindByName quelque part qui convient mieux car ne dépend pas de l'index des colonnes. Je suis sur le mobile maintenant je ne peux pas l'essayer ... –

+1

'FindByName' ne peut pas fonctionner sur le modèle de' DataGridColumn' juste comme cela comme pour cela vous auriez besoin de fournir une instance de cellule de données de grille. –

+0

@AngelWPF hmm apparemment j'obtiens une exception de pointeur nul. le textbox ele est toujours vide. J'ai essayé d'obtenir le type de myDataGrid.Columns [i] .GetCellContent (ligne). il me donne type contenu présentateur – edelweiss

0
<DataGridTemplateColumn Header="ClientDomain" Width="130" >  
<DataGridTemplateColumn.CellTemplate>  
<DataTemplate>  
<TextBox x:Name="directionColumnTextBlock" Text="{Binding Path=ClientDomain,Mode=TwoWay}"/>  
<DataTemplate.Triggers>  
<DataTrigger Binding="{Binding IssReadOnly}" Value="true">  
<Setter TargetName="directionColumnTextBlock" Property="IsReadOnly" Value="true" />  
</DataTrigger>  
</DataTemplate.Triggers>  
</DataTemplate>  
</DataGridTemplateColumn.CellTemplate>  
</DataGridTemplateColumn >  


DataGridRow row = dataGrid.ItemContainerGenerator.ContainerFromIndex 
(dataGrid.SelectedIndex) as DataGridRow;  

TextBox clientDomain= ((ContentPresenter)(dataGrid.Columns[2].GetCellContent(row))).Content as TextBox  
+0

@AngelWPF Mais, je vois clientDomain comme nul. pouvez-vous s'il vous plaît m'aider à le faire .. –

Questions connexes