programing

DataGrid의 텍스트 정렬

showcode 2023. 4. 20. 23:24
반응형

DataGrid의 텍스트 정렬

나는 WPF로 프로그래밍하고 있다.DataGrid 제어에서 셀의 중앙 콘텐츠를 만드는 방법이 필요합니다.다음 코드도 사용합니다.

<DataGrid x:Name="dg1" HorizontalAlignment="Left" Margin="10,10,0,0"
    VerticalAlignment="Top" Height="360" Width="498"
    FontFamily="2  Badr" FontSize="18" 
    AlternatingRowBackground="LightCoral" FlowDirection="RightToLeft"
    HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
    Background="{x:Null}"/>

뭐가 문제죠?

DataGridCell 스타일을 설정해야 합니다.

    <DataGrid>
        <DataGrid.Columns>
            <DataGridTextColumn>
                <DataGridTextColumn.ElementStyle>
                    <Style TargetType="TextBlock">
                        <Setter Property="HorizontalAlignment" Value="Center" />
                    </Style>
                </DataGridTextColumn.ElementStyle>
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>

VB에서 동적 DataGrid 열을 하나만 포맷해야 하는 사용자용입니다.커스텀 XAML 스타일로부터의 NET:

응용 프로그램 중.xaml:

<Application.Resources>
    <ResourceDictionary>
        <Style x:Key="DataGridCellCentered" TargetType="DataGridCell">
            <Setter Property="TextBlock.TextAlignment" Value="Center" />
        </Style>
    </ResourceDictionary>
</Application.Resources>

VB.NET 코드:

Me.MyDataGrid.Columns(5).CellStyle = TryFindResource("DataGridCellCentered")

안부 전해 주세요!

다른 답변에서 언급한 바와 같이:

<Setter Property="HorizontalAlignment" Value="Center" />

수평 정렬

이것은 배경과 같은 다른 스타일에 영향을 줍니다.텍스트를 가운데에만 배치하려면 대신 다음과 같이 하십시오.

<Setter Property="TextAlignment" Value="Center" />

텍스트 정렬

스타일을 만들 수도 있습니다.

<Window.Resources>
    <Style TargetType="DataGridCell">
        <Setter Property="HorizontalAlignment" Value="Center" />
    </Style>
</Window.Resources>  

편집 완료.

모든 열에 영향을 줍니다.

 <Window.Resources>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="HorizontalAlignment" Value="Stretch"/>
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
        </Style>
 </Window.Resources>

DataGridTemplateColumn에 날짜를 중앙으로 배치하려는 경우

 <DataGridTemplateColumn SortMemberPath="DataDiNascita" Header="Data di nascita" IsReadOnly="False">
                <DataGridTemplateColumn.CellEditingTemplate>                        
                    <DataTemplate>
                        <DatePicker SelectedDate="{Binding Path=DataDiNascita,Mode=TwoWay}" VerticalAlignment="Center" HorizontalAlignment="Left">                                
                        </DatePicker>                           
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
                <DataGridTemplateColumn.CellTemplate>                        
                    <DataTemplate>
                        <TextBlock Text="{Binding Path=DataDiNascita,Mode=TwoWay,StringFormat=\{0:dd/MM/yyyy\}}"  VerticalAlignment="Center" HorizontalAlignment="Left">                              
                        </TextBlock>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

WPF DataGrid에서 텍스트를 중앙에 배치하는 방법

<DataGrid >
    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="TextBlock.TextAlignment" Value="Center" />
        </Style>
    </DataGrid.CellStyle>
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="Label.HorizontalContentAlignment" Value="Center" />
        </Style>
    </DataGrid.ColumnHeaderStyle>
</DataGrid>

데이터그리드 수평방향 콘텐츠 정렬에서 누가 채워지거나 도킹되는지는 패널에 따라 다르겠지만 중앙 콘텐츠 정렬에서는 작동하지 않습니다. 이렇게 DataGrid.resource 태그를 사용할 수 있습니다.

<DataGrid.Resources>
                <Style TargetType="DataGridCell">
                    <Setter Property="HorizontalAlignment" Value="Center"/>
                </Style>
                <Style TargetType="DataGridColumnHeader">
                    <Setter Property="HorizontalContentAlignment" Value="Center"/>
                </Style>
</DataGrid.Resources>

아니면 이쪽을 봐

 <DataGrid x:Name="DgvUsers" AutoGenerateColumns="False" IsReadOnly="True" EnableRowVirtualization="False"
                      HorizontalContentAlignment="Stretch" VerticalContentAlignment="Center" HeadersVisibility="Column"
                      IsTextSearchEnabled="True" FlowDirection="RightToLeft" SelectionMode="Single" FontFamily="/Sandogh.App;component/Font/#Lalezar" >
                <DataGrid.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="HorizontalAlignment" Value="Center"/>
                    </Style>
                </DataGrid.CellStyle>
                <DataGrid.Columns>
                    <DataGridTextColumn Header="UserID" Visibility="Collapsed" Binding="{Binding Path=UserID}"/>
                    <DataGridTextColumn Header="FirstName" Binding="{Binding Path=Name}">
                        <DataGridTextColumn.ElementStyle>
                            <Style TargetType="TextBlock">
                                <Setter Property="HorizontalAlignment" Value="Center" />
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTextColumn Header="LastName" Binding="{Binding Path=Family}"/>
                    <DataGridTextColumn Header="Gender" Binding="{Binding Path=TGender}"/>
                    <DataGridTextColumn Header="UserName" Binding="{Binding Path=UserName}"/>
                    <DataGridTextColumn Header="Password" Binding="{Binding Path=Password}"/>
                    <DataGridTextColumn Header="Activity" Binding="{Binding Path=TActivity}"/>
                    <DataGridTextColumn Header="JobID" Visibility="Collapsed" Binding="{Binding Path=JobID}"/>
                    <DataGridTextColumn Header="JobName" Binding="{Binding Path=JobName}"/>
                </DataGrid.Columns>
            </DataGrid>

제 경우는, (매우 간단한)이 정상적으로 동작하고 있습니다.

<DataGrid
    x:Name="MyDataGrid"
    ...
    TextBlock.TextAlignment="Center">
</DataGrid>

언급URL : https://stackoverflow.com/questions/18177153/text-alignment-in-datagrid

반응형