代码之家  ›  专栏  ›  技术社区  ›  Álvaro García

如何将收割台高度设置为最大高度?

  •  0
  • Álvaro García  · 技术社区  · 5 年前

    我有一个使用两种样式的数据报,所以一些头使用它们,其他头使用另一种样式。主要目的是使其中一个与左侧对齐,另一个与右侧对齐。

    样式如下:

    <Style x:Key="DataGridColumnHeaderLeftAlignement" TargetType="{x:Type DataGridColumnHeader}">
                    <Setter Property="HorizontalAlignment" Value="Stretch"/>
                    <Setter Property="VerticalAlignment" Value="Center"/>
                    <Setter Property="FontWeight" Value="Black"/>
                    <Setter Property="VerticalContentAlignment" Value="Center"/>
                    <Setter Property="Height" Value="25"/>
                    <!--Lo interesante sería tener un poco de margen entre la cabecera y la primera
                    línea, pero al poner un margin tipo 0,0,0,10 aparece un background que no se sabe
                    cómo quitar, por lo que mejor no se pone margen.
                    @#REVISAR-05: ver cómo se puede dejar ese espacio.-->
                    <Setter Property="Margin" Value="0,0,0,0"/>
                    <Setter Property="Background" Value="Transparent"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
                                <Grid>
                                    <Themes:DataGridHeaderBorder BorderBrush="Black" BorderThickness="0,0,0,2" Background="LightGray" Padding="10, 0, 0, 2" SeparatorBrush="Transparent" SeparatorVisibility="Collapsed">
                                        <ContentPresenter HorizontalAlignment="Left" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                                    </Themes:DataGridHeaderBorder>
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
    
                <Style x:Key="DataGridColumnHeaderRightAlignement" TargetType="{x:Type DataGridColumnHeader}">
                    <Setter Property="HorizontalAlignment" Value="Stretch"/>
                    <Setter Property="VerticalAlignment" Value="Center"/>
                    <Setter Property="FontWeight" Value="Black"/>
                    <Setter Property="VerticalContentAlignment" Value="Center"/>
                    <Setter Property="Height" Value="AUTO"/>
                    <Setter Property="Margin" Value="0,0,0,0"/>
                    <Setter Property="Background" Value="Transparent"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
                                <Grid>
                                    <Themes:DataGridHeaderBorder BorderBrush="Black" BorderThickness="0,0,0,2" Background="LightGray" Padding="3, 0, 10, 2" SeparatorBrush="Transparent" SeparatorVisibility="Collapsed">
                                        <ContentPresenter HorizontalAlignment="Right" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                                    </Themes:DataGridHeaderBorder>
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
    

    在右对齐的样式中,我将高度设置为 AUTO 因为它可以有两行,所以我想调整到内容。但是,头的其余部分保持25的高度,因为它们使用的样式设置为25。但是我尝试了设置auto,结果是相同的,每个标题根据使用的样式有不同的高度。

    所以我的问题是,是否可以将所有收割台的高度调整为最大收割台大小?

    另外,我还有一个属性,如果它是真的,我必须在标题中使用2行,如果它是假的,我必须使用1行,所以另一个选项是检查视图模型属性中的这个变量的条件样式。

    1 回复  |  直到 5 年前
        1
  •  1
  •   maulik kansara    5 年前

    样式中需要两个更改

    1)删除用于设置柱高度的线条。

    <Setter Property="Height" Value="AUTO"/> //remove this
    

    2)将垂直对齐设置为拉伸,以便那些小的收割台可以将高度设置为较大的收割台。

    <Setter Property="VerticalAlignment" Value="Stretch"/> //update from Center to Stretch