wpf中listview内容居中显示

在WPF中使用ListView经常会用到GridView作为视图,但是却碰到GridViewColumn不能居中对齐的问题,

实现方法

给ListViewItem设置Style,让ListViewItem在水平方向拉伸填充:

<Setter Property="HorizontalContentAlignment" Value="Stretch"/>

<ListView ItemContainerStyle="{StaticResource ListViewItemStyle}">

然后再给GridViewColumn的Datatemplate设置居中对齐就可以了。

实例代码

复制代码
<ListView x:Name="_detectionListView"  
                  ItemsSource="{Binding DetectionCheckList}" 
                  Background="White"  
                  BorderThickness="0"  
                  ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                <ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                        <Setter Property="Background" Value="White" />
                        <Setter Property="Foreground" Value="#464457" />
                        <Setter Property="FontSize" Value="{Binding dataGridTextSize, Source={StaticResource ThemeCore}}" />
                        <Setter Property="FontWeight" Value="Regular" />
                        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                        <Style.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="White" />
                                <Setter Property="BorderBrush" Value="White" />
                            </Trigger>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter Property="Background" Value="White" />
                                <Setter Property="BorderBrush" Value="White" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </ListView.ItemContainerStyle>
                <ListView.View>
                    <GridView AllowsColumnReorder="False">
                        <GridView.ColumnHeaderContainerStyle>
                            <Style TargetType="GridViewColumnHeader">
                                <Setter Property="HorizontalContentAlignment" Value="Center"/>
                                <Setter Property="VerticalAlignment" Value="Center"/>
                                <Setter Property="SnapsToDevicePixels" Value="True" />
                                <Setter Property="Height" Value="48" />
                                <Setter Property="Background" Value="#F8F8F8"/>
                                <Setter Property="Opacity" Value="0.82"/>
                                <Setter Property="FontWeight" Value="Semibold"/>
                                <Setter Property="Foreground" Value="#464457"/>
                                <Setter Property="FontSize" Value="{Binding dataGridTextSize, Source={StaticResource ThemeCore}}"/>

                            </Style>
                        </GridView.ColumnHeaderContainerStyle>
                        <GridViewColumn Header="设备名称" Width="{Binding ElementName=col1,Path=ActualWidth}" >
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Grid>
                                        <TextBlock Text="{Binding deviceName}" HorizontalAlignment="Center" TextAlignment="Center"/>
                                    </Grid>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
   
                        <GridViewColumn Header="序列号" Width="{Binding ElementName=col2,Path=ActualWidth}">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding serialNumber}" HorizontalAlignment="Center"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="IMEI" Width="{Binding ElementName=col3,Path=ActualWidth}">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding deviceIMEI}" HorizontalAlignment="Center"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="设备型号" Width="{Binding ElementName=col4,Path=ActualWidth}">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding deviceModel}"   HorizontalAlignment="Center"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="检测时间" Width="{Binding ElementName=col5,Path=ActualWidth}">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding operateTime}"   HorizontalAlignment="Center"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="耗时" Width="{Binding ElementName=col6,Path=ActualWidth}">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding checkTimeCost}" HorizontalAlignment="Center"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="次数" Width="{Binding ElementName=col7,Path=ActualWidth}">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Violation_Count}"   HorizontalAlignment="Center"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="检测状态" Width="{Binding ElementName=col8,Path=ActualWidth}">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding DetectionStatus}" HorizontalAlignment="Center"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="USB位置" Width="{Binding ElementName=col9,Path=ActualWidth}">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding UsbPostionInfo}"  HorizontalAlignment="Center"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="进度" Width="{Binding ElementName=col10,Path=ActualWidth}">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding DetectStep}"  HorizontalAlignment="Center"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>
相关推荐
10年前端老司机7 分钟前
React 受控组件和非受控组件区别和使用场景
前端·javascript·react.js
夏晚星7 分钟前
vue实现微信聊天emoji表情
前端·javascript
停止重构9 分钟前
【方案】前端UI布局的绝技,响应式布局,多端适配
前端·网页布局·响应式布局·grid布局·网页适配多端
極光未晚10 分钟前
TypeScript在前端项目中的那些事儿:不止于类型的守护者
前端·javascript·typescript
ze_juejin11 分钟前
Vue3 + Vite + Ant Design Vue + Axios + Pinia 脚手架搭建
前端·vue.js
Rrvive12 分钟前
原型与原型链到底是什么?
javascript
lichenyang45313 分钟前
React项目(移动app)
前端
用户618482402195114 分钟前
Vue-library-start,一个基于Vite的vue组件库开发模板
前端
美团技术团队25 分钟前
报名 | 美团技术沙龙第86期:多业务场景下,美团如何做性能优化
前端
Rrvive1 小时前
localhost 和 127.0.0.1 的核心区别
前端