programing

모든 열 머리글에서 텍스트 래핑을 활성화하려면 어떻게 해야 합니까?

lastcode 2023. 5. 27. 11:33
반응형

모든 열 머리글에서 텍스트 래핑을 활성화하려면 어떻게 해야 합니까?

의 모든 열 머리글에 텍스트 래핑을 활성화하려면 어떻게 해야 합니까?DataGrid다른 기본 헤더 기능을 비활성화하지 않고?필요한 열 크기 조정, 정렬 방향 표시기 등.

이것을 할 수 있는 방법이 있습니까?

또는 app.xaml 파일의 원시 요소를 신경 쓰지 말고 다음(내 개체)을 수행하십시오.

<DataGrid Name="WBdataGrid" AutoGenerateColumns="False" ColumnHeaderHeight="50" >
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock TextWrapping="Wrap" Text="{Binding}"></TextBlock>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DataGrid.ColumnHeaderStyle>
    <DataGrid.Columns> ...

다른 기본 헤더 기능을 비활성화하지 않고 DataGrid의 모든 열 헤더에 텍스트 래핑을 활성화합니다.

다음 네임스페이스를 app.xaml 파일에 추가해야 합니다.

xmlns:primitives="clr-namespace:Microsoft.Windows.Controls.Primitives;assembly=WPFToolkit"

그런 다음 이 태그를 app.xaml에 추가합니다.

<Style TargetType="{x:Type primitives:DataGridColumnHeader}">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBlock TextWrapping="Wrap" Text="{Binding}"></TextBlock>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

이렇게 하면 WPF 응용 프로그램 전체에 걸쳐 모든 데이터 그리드의 헤더에 텍스트 래핑이 추가됩니다.

각 DataGrid 헤더의 텍스트를 중앙에 배치하려는 경우 다음 스타일을 사용하여 이 작업을 수행할 수 있습니다.

<Style TargetType="{x:Type primitives:DataGridColumnHeader}">
    <Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
</Style>

그러나 각 DataGrid 에 개별적으로 TextWraping 또는 HorizontalAlignment를 추가해야만 이 작업을 수행할 수 있다는 WPF 기사를 많이 보았습니다.

<toolkit:DataGridTextColumn Binding="{Binding Path=TaxAmount}">
    <toolkit:DataGridTextColumn.HeaderTemplate >
        <DataTemplate>
            <TextBlock Text="Tax Amount" Width="90" TextWrapping="Wrap" HorizontalAlignment="Center"/>
        </DataTemplate>
    </toolkit:DataGridTextColumn.HeaderTemplate>
</toolkit:DataGridTextColumn>

추가했습니다.&#x0a;텍스트를 줄바꿈할 헤더 텍스트로 이동합니다.이것은 헤더 텍스트를 어떤 것에 바인딩할 필요가 없을 때 유용합니다.

<DataGridTextColumn x:Name="cAccountNumber" 
                    Header="Account&#x0a; Number" 
                    Width="80" 
                    Binding="{Binding Path=AccountNumber}" />

열 이름을 데이터 그리드 열에 직접 할당하는 대신.헤더 속성, 열 이름이 들어 있는 TextBlock을 만들고 TextBlock의 TextWraping 속성을 "Wrap"으로 설정한 다음 TextBlock을 DataGrid Column에 할당했습니다.머리글 속성.이렇게 하면 기본 헤더 기능이 유지됩니다.

예:

<toolkit:DataGridTextColumn Binding="{Binding Path=MyProperty}">
    <toolkit:DataGridTextColumn.Header>
        <TextBlock Text="Something Longer" TextWrapping="Wrap" />
    </toolkit:DataGridTextColumn.Header>
</toolkit:DataGridTextColumn>

글로벌을 생성할 수 있습니다.Style열 머리글의 경우.예를 들어 마크업을 하지 않으면 구문을 알 수 없지만 다음과 같이 나타납니다.

<Style TargetType="{x:Type dg:ColumnHeader}">
    <Setter Property="TextWrapping" Value="Wrap"/>
</Style>

그 이후로Style키가 없으므로 모든 열 헤더에 자동으로 적용됩니다.또한 스타일은 로컬로 설정된 속성을 재정의하지 않으므로 기존 헤더 기능을 "사용하지 않도록" 설정하지 않습니다.

언급URL : https://stackoverflow.com/questions/1289285/how-do-i-enable-text-wrapping-on-all-column-headers

반응형