WPF 데이터 그리드의 텍스트 정렬
WPF에서 열 데이터를 중앙에 정렬하려면 어떻게 해야 합니까?DataGrid
?
DataGridTextColumn을 사용하는 경우 다음 코드 조각을 사용할 수 있습니다.
<Style TargetType="DataGridCell">
<Style.Setters>
<Setter Property="TextBlock.TextAlignment" Value="Center" />
</Style.Setters>
</Style>
구체적인 내용을 알지 못하고 말하기는 어렵지만, 여기에 다음과 같은 것이 있습니다.DataGridTextColumn
중심이 되는 것:
<wpf:DataGridTextColumn Header="Name" Binding="{Binding Name}" IsReadOnly="True">
<wpf:DataGridTextColumn.CellStyle>
<Style>
<Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
</Style>
</wpf:DataGridTextColumn.CellStyle>
</wpf:DataGridTextColumn>
저는 huttelihut의 솔루션으로 시작했습니다.불행하게도, 그것은 아직 저에게 효과가 없었습니다.저는 그의 답변을 수정하여 다음과 같이 생각해냈습니다(해결책은 텍스트를 오른쪽으로 정렬하는 것입니다).
<Resources>
<Style x:Key="RightAligned" TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Right"/>
</Style>
</Resources>
보시다시피, 저는 스타일을 DataGridCell이 아닌 TextBlock에 적용했습니다.
그런 다음 셀 스타일이 아닌 요소 스타일을 설정해야 했습니다.
ElementStyle="{StaticResource RightAligned}"
Kent Boogaart의 +1입니다.코드가 약간 덜 혼란스러워지고 여러 열에서 정렬을 사용할 수 있게 되었습니다.
<Resources>
<Style x:Key="NameCellStyle" TargetType="DataGridCell">
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
</Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="Name" CellStyle="{StaticResource NameCellStyle}" Binding="{Binding Name}"/>
// .. other columns
</DataGrid.Columns>
여기 @Mohammed다음 뒤에 있는 C# 코드로 변환된 Afadil의 XAML 답변:
var MyStyle = new Style(typeof(DataGridCell)) {
Setters = {
new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center)
}
};
적용 방법Style
을 설정합니다.CellStyle
의 재산.DataGrid
,예.
var MyGrid = new DataGrid() {
CellStyle = MyStyle
};
코드 뒤에 있는 경우:
grid.CellStyle = newCellStyle();
public static Style newCellStyle()
{
//And here is the C# code to achieve the above
System.Windows.Style style = new Style(typeof(DataGridCell));
style.Setters.Add(new System.Windows.Setter
{
Property = Control.HorizontalAlignmentProperty,
Value = HorizontalAlignment.Center
});
return style;
}
저는 결국 수용된 답을 사용하여 세포가 이동하고 펑키해 보이는 문제를 겪었습니다.늦은 건 알지만 제 연구 결과가 누군가에게 도움이 되길 바랍니다.사용자:
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
</Style>
CellStyle보다는.
나는 이것이 잘 작동합니다.
<DataGridTextColumn Width="1*" Binding="{Binding Balance, StringFormat=C} "Header="Balance">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Right"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
누군가가 여전히 이에 대한 답을 찾고 있다면, 저에게 효과가 있었던 것은 다음과 같습니다.
<DataGridTextColumn ...>
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Left"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
알겠습니다. frameworkElement 접근 방식을 사용했는데 행을 강조 표시하려고 하면 이상한 동작이 발생했습니다.
이 스레드에 WPF 데이터 그리드 정렬의 다른 예를 추가했습니다!
제가 가장 좋아하는 솔루션은 다음과 같습니다.
<DataGridTextColumn Header="My Column" Binding="{Binding MyDBValue}" Width="100" >
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.CellStyle>
@Mohammed를 개종시켜준 Danny Beckett에게 감사합니다.C# 코드로 변환된 Afadil의 XAML 응답입니다.모든 데이터 그리드가 동적으로 설정되므로 언제든지 원하는 것을 변경할 수 있습니다.
아무것도 없는 빈 데이터 그리드를 설정한 다음 데이터 그리드를 데이터에 바인딩하려면 datagrid.column을 사용합니다.
var centerTextSetter = new Style(typeof(DataGridCell))
{
Setters = { new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center) }
};
DgDbNames.Columns.Add(new DataGridTextColumn()
{
Header = "Db Name",
Binding = new System.Windows.Data.Binding("DbName"),
IsReadOnly = true,
Width = new DataGridLength(0.2, DataGridLengthUnitType.Star),
CellStyle = centerTextSetter
});
Bruno의 TextBlock을 정말 좋아합니다.텍스트 정렬 접근 방식입니다.이것을 수평 정렬과 함께 사용할 수 있습니다. 그러면 모든 배경이 전체 그리드 셀로 확장됩니다.
예(VB 단위)
Dim sty = New System.Windows.Style(GetType(DataGridCell))
sty.Setters.Add(New Setter(HorizontalAlignmentProperty, HorizontalAlignment.Stretch))
sty.Setters.Add(New Setter(TextBlock.TextAlignmentProperty, TextAlignment.Right))
sty.Setters.Add(New Setter(BackgroundProperty, Brushes.LightGray))
언급URL : https://stackoverflow.com/questions/720732/text-alignment-in-a-wpf-datagrid
'IT' 카테고리의 다른 글
배열이 비어 있는지 또는 존재하는지 확인하는 방법은 무엇입니까? (0) | 2023.06.02 |
---|---|
Ruby File.open 모드 및 옵션은 무엇입니까? (0) | 2023.06.02 |
mongodb에서 중복 문서를 가장 빨리 제거하는 방법 (0) | 2023.06.02 |
@Java로 주석 문서화 (0) | 2023.06.02 |
iPhone 일정관리에서 사용자 지정 이벤트를 프로그래밍 방식으로 추가 (0) | 2023.06.02 |