假設你已經改變了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
包含您的原始Text
和TextBlock
在Template
是另一個。
所以你會被綁定到的TemplatedParent
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent},
Path=Content.Text}"/>
的Content.Text
屬性,因此,概括起來得到正確的Text
。 This works
<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>
請注意,當Content是一個字符串時,ContentPresenter會自動生成一個TextBlock。 –