【问题标题】:WPF contents of cell of DataGridTemplateColumnDataGridTemplateColumn 单元格的 WPF 内容
【发布时间】:2011-07-27 06:40:23
【问题描述】:

在 WPF 中,我有对 DataGridCell 的引用,并希望获取它的内容。我曾经将该单元格放在 DataGridTextColumn 中,并且可以像这样获取内容:

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>

有没有办法仍然获取单元格内容(在我的情况下是一个字符串)?

【问题讨论】:

  • 我在 stackoverflow 上的另一个 [问题][1] 中找到了一个可用的解决方案。 [1]:stackoverflow.com/questions/7029324/…
  • 在这种情况下过于复杂了。你可以在(_selectedCell.DataContext as *cast to parent of Author*).Author找到你的字符串。

标签: wpf cell datagridtemplatecolumn


【解决方案1】:

您应该能够在DataTemplate 中为您的TextBlock 命名,然后使用Text 属性获取数据。

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

var text = txtData.Text as string;

【讨论】:

  • 谢谢,我明天测试一下。但在你的例子中,我是如何从单元格到 txtData 的,对我来说并不是很明显。
  • txtData 只是我分配给 TextBlock 的任意名称。如果你愿意,你可以叫它cell
  • 我明白这一点。我的意思是:我引用了 DataGridCell。如何使用您的方法访问其内容?
  • 您能否在 OP 中发布更多您的 xaml(或可以完成您尝试做的相同事情的示例)? text 的值是否为空?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2010-12-28
  • 2023-01-13
相关资源
最近更新 更多