2011-07-27 75 views
0

在WPF中,我有一個DataGridCell的引用並希望獲取其內容。我曾經有一個細胞在DataGridTextColumn,並可能在這樣的內容得到:DataGridTemplateColumn的單元格的WPF內容

var text = cell.Content as TextBlock; 

但這不再工作,因爲小區處於DataGridTemplateColumn,雖然我沒有指定的TextBlock的DataTemplate中該列。還有辦法解決嗎?

編輯來澄清問題。以下代碼正在按預期工作:

<!-- 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,代碼將不起作用,因爲block將爲空。

<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

在這種情況下許多過於複雜。你可以在'(_selectedCell.DataContext as *轉換爲Author *的父類)作者'中找到你的字符串。 – LPL

回答

0

您應該能夠在DataTemplate的內部爲您的命名一個名稱,然後使用Text屬性獲取數據。

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

var text = txtData.Text as string; 
+0

謝謝,我明天會測試這個。但是在我的例子中,我不是很明白我是如何從單元格到txtData的。 –

+0

'txtData'只是我分配給TextBlock的任意名稱。如果你願意,你可以稱它爲「細胞」。 –

+0

我明白了。我的意思是:我有一個DataGridCell的引用。我如何使用你的方法來訪問它的內容? –

相關問題