我用ContentPresenter
替换DataGridCell
的{{1}}中的Template
,现在我搜索内容的正确TextBlock
。
Binding
的正常方式为Text="{TemplateBinding Content}
- 它不起作用。 TextBlock
也不正确。
还有其他想法吗?
答案 0 :(得分:14)
假设您已将DataGridCell Template
更改为以下
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<TextBlock Text="{Binding}"/>
<!--<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> -->
</Border>
</ControlTemplate>
自您删除了ContentPresenter
后,DataGridCell
无法显示其Content
。它仍然在那里。 DataGridCell.Content
是包含原始TextBlock
的{{1}},Text
中的TextBlock
是另一个。
因此,您可以通过将其绑定到Template
Text
属性来获得正确的Content.Text
TemplatedParent
所以,总结一下。这工作
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent},
Path=Content.Text}"/>
答案 1 :(得分:2)
数据网格单元的数据上下文应该是数据本身。所以绑定应该只是:
<TextBlock Text="{Binding}"/>