4

我将'sContentPresenter中的DataGridCell's替换为TemplateaTextBlock现在我搜索正确Binding的内容。

正常的方法是Text="{TemplateBinding Content}-TextBlock它不起作用。也Text="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Content, Mode=TwoWay}"不能正常工作。

还有其他想法吗?

4

2 回答 2

15

假设您已将其更改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>

由于您删除了ContentPresenterDataGridCell无法显示其Content. 它仍然存在。theDataGridCell.Content 是一个TextBlock包含你的原件Text,而TextBlockin theTemplate是另一个。

因此,您将Text通过将其绑定Content.TextTemplatedParent

<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent},
                          Path=Content.Text}"/>

所以,总结一下。这有效

<ControlTemplate TargetType="{x:Type DataGridCell}">
    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
        <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, 
                                  Path=Content.Text}"/>
    </Border>
</ControlTemplate>
于 2011-08-23T13:28:01.650 回答
1

数据网格单元格的数据上下文应该是数据本身。所以绑定应该是:

<TextBlock Text="{Binding}"/>
于 2011-08-23T12:48:21.857 回答