Выровнять столбцы в ListView

Допустим, надо прижать заголовок и содержимое столбца вправо.
Вроде как-то так делается:

    <Window.Resources>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Right"/>
        </Style>
        <DataTemplate x:Key="test">
            <TextBlock HorizontalAlignment="Right" />
        </DataTemplate>
    </Window.Resources>
        <ListView Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Name" Width="80"  />
                    <GridViewColumn Header="ID" Width="110" CellTemplate="{StaticResource test}" />
                    <GridViewColumn Header="Topic" />
                </GridView>
            </ListView.View>
        </ListView>

Не работает. Не пойму, чего не хватает :thinking:

Не пойму, зачем это:

        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Right"/>
        </Style>

Наверное, для выравнивания содержимого. Но как он узнает, какой элемент в каком столбце в каком ListView выравнивать? :thinking:

Нашёл, что вот так можно:

                        <GridViewColumn Width="110" >
                            <Label HorizontalAlignment="Right">ID</Label>
                        </GridViewColumn>

Но всё-равно по центру отображается :man_shrugging:

Видимо Label имеет маленькую ширину, меньше чем ширина ячейки. Подумай либо как в ячейке указать выравнивание, либо как указать у Label, чтобы ширина была больше (как у ячейки, что-то вроде 100%).

Добавил ширину.


                        <GridViewColumn Width="90" DisplayMemberBinding="{Binding Id}">
                            <Label Width="90" Background="Aqua" HorizontalAlignment="Right">
                                ID
                            </Label>
                        </GridViewColumn>

Снимок экрана 2023-08-08 203132
Но теперь оно, почему-то, влево уехало :thinking:

Исходя из этого текста:

Я так понял, что выравнивается не текст, а сам элемент.

А нужно какое-то другое свойство, типа

HorizontalContentAlignment

В общем, замени HorizontalAlignment на HorizontalContentAlignment

1 лайк

не похоже :thinking:


                        <GridViewColumn Width="90" DisplayMemberBinding="{Binding Id}">
                            <Label Width="30" Background="Aqua" HorizontalAlignment="Right">
                                ID
                            </Label>
                        </GridViewColumn>

Снимок экрана 2023-08-08 205329

:+1: