[英]WPF DataGrid Text Vertical Alignment
我正在使用WPF DataGrid。 我正在嘗試獲取DataGridTextColumns的內容,以使顯示的文本垂直居中。
目前,我的單元格值如下所示: http : //imgur.com/nkbE7Wt 。 如您所見,它們在單元格的頂部垂直對齊。
我嘗試將模板添加到DataGridCells的樣式中,此方法有效,並且使文本居中,如下所示: http : //imgur.com/TCo6RCa 。 DataGridCells的樣式如下:
<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource SelectedBrush}" />
<Setter Property="TextElement.Foreground" Value="#111111" />
</Trigger>
</Style.Triggers>
<Setter Property="Background" Value="Transparent" />
<Setter Property="TextElement.Foreground" Value="#666666" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Background="Transparent"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="0"
SnapsToDevicePixels="True"
Padding="5"
VerticalAlignment="Center">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
就應如何顯示而言,此添加的模板基本上可以完全滿足我的要求。 但是有一個問題。 當用戶單擊任何單元格以突出顯示行時,他們必須在樣式設置的邊框內單擊以實際使DataGrid突出顯示行。
使用Snoop,我可以看到這是導致問題的邊界。 這是:Snoop顯示為http://imgur.com/9pD0W5C作為邊框,並且除非單擊鼠標時我的鼠標處於打開狀態或紅色突出顯示的行中,否則將不會選擇/突出顯示該行。
有什么方法可以修改我的模板,以使其在單擊單元格的任何部分而不是僅在邊框內時突出顯示行?
或者,是否有一些簡單的方法可以使文本在單元格中垂直居中?
我已經嘗試過以我的樣式設置TextElement.VerticalAlignment
,但這會導致datagrid中有些多余的行看起來很奇怪。
模板中的邊框由於居中而無法填充DataGridCell的可用空間( VerticalAlignment="Center"
)
如果僅為ContentPresenter設置VerticalAlignment="Center"
,為Border設置VerticalAlignment="Center"
VerticalAlignment="Stretch"
和HorizontalAlignment="Stretch"
,則它應該可以工作。
更好地配置樣式對齊方式(使用樣式)
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border ...>
<ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}" ... />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.