2011-07-27 7 views
0

WPF에서 DataGridCell에 대한 참조가 있으며 그 내용을 가져오고 싶습니다. 내가 DataGridTextColumn에 해당 셀을 가지고 사용하고이 같은 내용에서 얻을 수 :DataGridTemplateColumn 셀의 WPF 내용

var text = cell.Content as TextBlock; 

을하지만 세포는 DataGridTemplateColumn에 있기 때문에 내가 그 컬럼에 대한 DataTemplate을 같이하는 TextBlock을 지정 않았지만이 작동하지 않는 이상 . 거기에 도달 할 수있는 방법이 아직 남아 있습니까?

EDIT를 사용하여 문제를 명확히합니다. 다음 코드는 의도 한대로 작동하고 있습니다 :

<!-- XAML --> 
<DataGridTextColumn Header="Autor" Width="*" Binding="{Binding Author}" /> 

//C# 
var block = _selectedCell.Content as TextBlock; 
var text = block.Text; //text contains the string that is also displayed by the grid in that call 

그러나 TemplateColumn을 사용하면 블록이 null이되기 때문에 코드가 작동하지 않습니다.

<DataGridTemplateColumn Header="Autor" Width="*"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Name="txtAutor" Text="{Binding Author}" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

여전히 셀 내용 (내 경우에는 문자열)을 얻을 수있는 방법이 있습니까?

+0

나는이 다른 [질문] [1] 여기서 stackoverflow에 사용할 수있는 해결책을 찾았습니다. [1] : http://stackoverflow.com/questions/7029324/grabbing-reference-to-element-inside-datagridtemplatecolumn –

+0

는 대부분이 경우 overcomplicated. 문자열은'(Author의 * cast로 * _selectedCell.DataContext *)에서 찾을 수 있습니다. Author'. – LPL

답변

0

TextBlockDataTemplate 안에 넣은 다음 Text 속성을 사용하여 데이터를 가져올 수 있어야합니다.

<DataTemplate> 
    <TextBlock Name="txtData" Text="{Binding}" /> 
</DataTemplate> 

var text = txtData.Text as string; 
+0

고마워, 나는 내일 이것을 시험 할 것이다. 그러나 당신의 예제에서 내가 셀에서 txtData로 어떻게 왔는지는 당연하지 않습니다. –

+0

'txtData'는 TextBlock에 할당 된 임의의 이름입니다. 원하는 경우 '셀'이라고 부를 수 있습니다. –

+0

나는 그것을 이해했다. 내 말은 : DataGridCell에 대한 참조가 있습니다. 방법을 사용하여 내용에 액세스하려면 어떻게해야합니까? –