Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > не работает выравнивание в ListView


Автор: Stas123 29.11.2011, 14:41
Такой код не делает выравнивания по правому краю в столбцах. Как быть?
Код

<ListView  HorizontalContentAlignment="Right" Background="Gainsboro" ItemsSource="{Binding ElementName=peoplesWindow, Path=Data}" >
                    <ListView.View >
                        <GridView >
                            <GridViewColumn Width="80" Header="Name"  DisplayMemberBinding="{Binding Path=Name}" />
                        </GridView>
                    </ListView.View>
                </ListView>

Автор: Imir 29.11.2011, 14:57
Можно использовать стили. 
Например вот так:

Код

<ListView x:Name="PLn" HorizontalContentAlignment="Right" Background="Gainsboro" ItemsSource="{Binding ElementName=peoplesWindow, Path=Data}" >
                                <ListView.View >
                                    <GridView>
                                        <GridViewColumn Width="80" Header="Name"  DisplayMemberBinding="{Binding Path=Name}">
                                            <GridViewColumn.HeaderContainerStyle>
                                                <Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
                                                    <Setter Property="HorizontalContentAlignment" 
                                                                 Value="{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"/>
                                                </Style>
                                            </GridViewColumn.HeaderContainerStyle>
                                        </GridViewColumn>
                                    </GridView>
                                </ListView.View>
                            </ListView>


Хотя конечно лучше вынести стили в ресурсы.

Автор: Stas123 29.11.2011, 17:24
Imir, Спасибо, но мне нужно выравнивать не заголовок столбца, а содержимое столбца. Как это реализовать?

Автор: Imir 29.11.2011, 18:45
Тогда можно вот так:

Код

 <ListView HorizontalContentAlignment="Right" Background="Gainsboro" IsTextSearchCaseSensitive="True" 
                 ItemsSource="{Binding ElementName=peoplesWindow, Path=Data}">
                                <ListView.View>
                                    <GridView>
                                        <GridViewColumn Width="80" Header="Name">
                                            <GridViewColumn.HeaderContainerStyle>
                                                <Style TargetType="{x:Type GridViewColumnHeader}" 
                                                           BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
                                                    <Setter Property="HorizontalContentAlignment" 
                                                                 Value="{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"/>
                                                </Style>
                                            </GridViewColumn.HeaderContainerStyle>
                                            <GridViewColumn.CellTemplate>
                                                <DataTemplate>
                                                    <TextBlock Background="AntiqueWhite" HorizontalAlignment="Stretch" TextAlignment="Right" Text="{Binding Path=Name}"/>
                                                </DataTemplate>
                                            </GridViewColumn.CellTemplate>
                                        </GridViewColumn>
                                    </GridView>
                                </ListView.View>
                                <ListView.ItemContainerStyle>
                                    <Style TargetType="{x:Type ListViewItem}">
                                        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                                    </Style>
                                </ListView.ItemContainerStyle>
                            </ListView>

Автор: Stas123 30.11.2011, 16:12
Imir, спасибо, заработало.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)