Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何设置datagrid中垂直设置的列标题的高度(宽度)?_Wpf_Xaml_Datagrid - Fatal编程技术网

Wpf 如何设置datagrid中垂直设置的列标题的高度(宽度)?

Wpf 如何设置datagrid中垂直设置的列标题的高度(宽度)?,wpf,xaml,datagrid,Wpf,Xaml,Datagrid,我将此代码用于我的DataGrid: <DataGrid Grid.Row="1" Name="myDataGrid" SelectedItem="{Binding chosenReport, Mode=TwoWay}" ItemsSource="{Binding Reports, Mode=TwoWay}" IsReadOnly="True" FontSize="14" AutoGenerateColumns="False">

我将此代码用于我的DataGrid:

<DataGrid
    Grid.Row="1"
    Name="myDataGrid"
    SelectedItem="{Binding chosenReport, Mode=TwoWay}"
    ItemsSource="{Binding Reports, Mode=TwoWay}"
    IsReadOnly="True"
    FontSize="14"
    AutoGenerateColumns="False">

    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="LayoutTransform">
                <Setter.Value>
                    <RotateTransform Angle="270" />
                </Setter.Value>
            </Setter>
        </Style>
    </DataGrid.ColumnHeaderStyle>

    <DataGrid.Columns>
        <DataGridTextColumn Header="Field 1. Bla blabla blabla blabla blabla blablablabla blablablabla blabla" Binding="{Binding Path=Field1}" />
        <DataGridTextColumn Header="Field 2. Bla blabla blabla blabla blabla blablablabla blablablabla blabla Bla blabla blabla blabla blabla blablablabla blablablabla blabla" Binding="{Binding Path=Field2}" />
        <DataGridTextColumn Header="Field 3. Bla blabla blabla blabla blabla blablablabla blablablabla blabla tralalaalalalaal" Binding="{Binding Path=Field3}" />
    <DataGrid.Columns/>
<DataGrid/>

是的,它可以工作并且垂直显示所有DataGrid字段。但是,由于列标题中的文本很长,我在datagrid中看不到数据,因为它被标题中的文本覆盖

我如何告诉DataGrid进行某种换行,将每个列标题中的文本放在几个“垂直行”中?
或者可能有列标题的高度(宽度)?

使用内容模板将文本放入带有文本环绕的文本块中,然后限制宽度并将整个内容旋转270度:

<DataGrid.ColumnHeaderStyle>
    <Style TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Grid MaxWidth="160">
                        <Grid.LayoutTransform>
                            <RotateTransform Angle="270" />
                        </Grid.LayoutTransform>
                        <TextBlock 
                            TextWrapping="WrapWithOverflow"
                            Text="{Binding}" 
                            />
                    </Grid>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</DataGrid.ColumnHeaderStyle>


使现代化 如果您的用户注意力持续时间有限,或者您只是不太喜欢他们,请将此添加到网格:

<Grid.Triggers>
    <EventTrigger RoutedEvent="MouseEnter">
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation
                    From="0"
                    To="270"
                    Duration="0:0:2"
                    DecelerationRatio=".9"
                    Storyboard.TargetProperty="LayoutTransform.Angle"
                    />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Grid.Triggers>

Lol!!有趣的效果。但我认为,从270度转回到0度,然后在鼠标离开列标题后回到270度可能会有用:)