Как установить максимальную высоту заголовка? - PullRequest
0 голосов
/ 24 января 2019

У меня есть сетка данных, которая использует 2 стиля, поэтому некоторые заголовки используют их, а другие - другой стиль.Основная цель - выровнять одну из левой и другой правой.

Стили таковы:

<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 Ответ

0 голосов
/ 24 января 2019

Требуются два изменения в ваших стилях

1) удалите строку, используемую для установки высоты столбца.

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

2) установите VerticalAlignment на растяжение, чтобы эти маленькие заголовки моглиустановить высоту равную большему

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