2011-07-27 31 views
0

WPFでは、DataGridCellへの参照があり、その内容を取得したいと考えています。私はDataGridTextColumnでそのセルを持つために使用されると、このような内容では得ることができます:DataGridTemplateColumnのセルのWPFコンテンツ

var text = cell.Content as TextBlock; 

しかし、私は、その列のためのDataTemplateとしてのTextBlockを指定しなかったが、細胞は、DataGridTemplateColumnであるので、これは働いて長くはありません。まだそれを得る方法はありますか?

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 

私はしかし、ブロックはnullになりますので、コードは動作しませんTemplateColumnを使用している場合。

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

まだセルの内容(私の場合は文字列)を取得する方法はありますか?

+0

私はこの他の[質問] [1]ここで使用可能な解決策を見つけました。 [1]:http://stackoverflow.com/questions/7029324/grabbing-reference-to-element-inside-datagridtemplatecolumn –

+0

この場合多くovercomplicated。文字列は '(Authorの*へのキャストとしての_selectedCell.DataContext *)で見つけることができます。 – LPL

答えて

0

TextBlockDataTemplateの名前を付けてから、Textプロパティを使用してデータを取得する必要があります。

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

var text = txtData.Text as string; 
+0

ありがとう、私は明日これをテストします。しかし、あなたの例では、どのようにセルからtxtDataに来るのかはすぐに分かりません。 –

+0

'txtData'は、TextBlockに割り当てた任意の名前です。あなたが望むなら、それを 'cell'と呼ぶことができます。 –

+0

私はそれを理解しました。つまり、私はDataGridCellへの参照を持っています。あなたのメソッドを使ってコンテンツにアクセスするにはどうすればいいですか? –

関連する問題