我是c#的新手,並在WPF UI上尋找幫助。WPF datagridtextcolumn垂直內容對齊不起作用
1)我想我的數據網格的內容都顯示在列的中心。
2)爲了在UI中看起來很漂亮,我需要datagridtextboxcolumn和 datagridtemplatecolumn(組合框)寬度和高度適合列。
目前,我已經通過Stretch VerticalAlignment和HorizontalAlignment實現了Content Presenter的樣式,它使數據適合列的寬度和高度。
在設置TextBlock.TextAlignment的setter屬性後,它成功顯示數據水平居中。
但是,即使我已將垂直內容對齊的setter屬性設置爲居中,數據仍未在垂直中心顯示。
所以,我需要專家給我一些建議,使數據顯示在垂直和水平中心,並拉伸寬度高度以適合列。
下面是我的代碼風格
<Style x:Key="Body_Content_DataGrid_Centering"
TargetType="{x:Type DataGridCell}">
<Setter Property="TextBlock.TextAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
及以下是我的DataGrid實現代碼:
<DataGrid x:Name="dataGridAccount" RowHeight="27" MinRowHeight="50" ColumnHeaderHeight="50" MinColumnWidth="150" RowHeaderWidth="0" Margin="0" Grid.Row="1" AutoGenerateColumns="False" CellStyle="{StaticResource Body_Content_DataGrid_Centering}" VerticalContentAlignment="Bottom">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding username}" ClipboardContentBinding="{x:Null}" Header="Username" Width="1*">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Header="Entry Level" Width="1*">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding entryLevel}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{StaticResource entryLevel}"
SelectedItem="{Binding entryLevel}" Margin="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
當前結果: http://imgur.com/a/BfJrC
預期結果: http://imgur.com/a/v8v8a
英語不是我的母語,請原諒我的錯誤。
謝謝先進。
設置
VerticalAlignment={TemplateBinding VerticalContentAlignment}
但我可以看到文本塊已經採取綿延VerticalAlignment和HorizontalAligment的效果如圖http://imgur.com/a/dGVWw 只是我不知道爲什麼VerticalContentAlignment對文本塊沒有影響,因爲你可以看到文本始終位於頂部。 – CM92