我是c#的新手并在WPF UI上寻求帮助。
1)我希望我的数据网格内容全部显示在列的中心。
2)为了在UI中看起来不错,我需要datagridtextboxcolumn和 datagridtemplatecolumn(组合框)宽度和高度适合列。
目前,我已经使用Stretch VerticalAlignment和HorizontalAlignment实现了Content Presenter的样式,成功地使数据适合列的宽度和高度。
在设置TextBlock.TextAlignment的setter属性后,成功显示数据水平居中。
但即使我已将垂直内容对齐的setter属性设置为Center,数据也不会垂直显示在中心。
所以,我需要专家给我一些建议,使数据在垂直和水平方向上显示,并拉伸宽度高度以适合列。
以下是我的样式代码
<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
英语不是我的母语,请原谅我的任何错误。
先谢谢了。
答案 0 :(得分:0)
我认为,Textblock
内的GridCells
并没有占据整个单元格的空间。您为GridCell设置VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
,但不为此Cell中的TextBlock
设置。因此,您应该将两个对齐添加到单元格内的TextBlock
样式。
答案 1 :(得分:0)
尝试在ContentPresenter上设置VerticalAlignment={TemplateBinding VerticalContentAlignment}