在WPF中的一个控件(Gridview标头)中使用多个布局转换

时间:2010-08-09 20:28:23

标签: c# wpf layouttransform

我正在尝试构建一个项目网格,所有项目都是动态(行和列)生成的。我有一个listview和gridview。我获取所有列,并将它们添加到gridview。然后我将所有行添加到表中,并将其绑定到listview。

我正在使用类似的东西来旋转视图顶部的标题名称。

                    <ListView Name="lvEverything">
                    <ListView.Resources>
                        <Style TargetType="{x:Type GridViewColumnHeader}">
                            <Setter Property="LayoutTransform">
                                <Setter.Value>
                                    <RotateTransform Angle="-90"/>
                                </Setter.Value>
                            </Setter>
                            <Setter Property="Width" Value="250"></Setter>
                        </Style>
                    </ListView.Resources>

这很好用,它会旋转文本并使列现在正确。

我想做的是,它将第一列设置为NOT旋转。我不确定,也不能只将它应用于我想要的列。

1 个答案:

答案 0 :(得分:0)

明确地在第一列上设置HeaderContainerStyle,以便它不会回退到使用隐式列:

<ListView Name="lvEverything">
    <ListView.Resources>
        <Style TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="LayoutTransform">
                <Setter.Value>
                    <RotateTransform Angle="-90"/>
                </Setter.Value>
            </Setter>
            <Setter Property="Width" Value="250"></Setter>
        </Style>
        <Style x:Key="FirstColumnStyle" TargetType="GridViewColumnHeader"/>
    </ListView.Resources>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="First Column"
                DisplayMemberBinding="{Binding FirstColumn}"
                HeaderContainerStyle="{StaticResource FirstColumnStyle}"/>
            <GridViewColumn Header="Second Column"
                DisplayMemberBinding="{Binding SecondColumn}"/>
        </GridView>
    </ListView.View>
</ListView>

或者,如果您要在代码中创建列:

GridViewColumn firstColumn = ...;
firstColumn.HeaderContainerStyle = new Style();