首页 > 解决方案 > ListView 中的图像未完全居中

问题描述

我正在尝试在 ListView 中显示图像列表。我希望这些图像显示在“项目”的中心。

我试图通过将各自的 VerticalAlignment 和 Horizo​​ntalAlignment 设置为中心来实现这一点。这并没有给我想要的结果。当一个项目被选中时,您可以清楚地看到左侧更大的“蓝色”区域。

我错过了什么吗?

图形用户界面示例: 图像不在中心示例

我的代码:

<Window x:Class="MyClass.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
  <Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="3*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="3*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <ListView Grid.Column="0" Grid.Row="0" Margin="5" Name="lvImages" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel  Orientation="Horizontal"  ItemHeight="100" ItemWidth="100"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate >
                <Image Source="{Binding Bitmap}" Margin="2"  VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="UniformToFill" />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    <Button  Grid.Column="1" Grid.Row="0" Margin="5">Picture details</Button>
    <Button Grid.Column="0" Grid.Row="1" Margin="5">Document options</Button>
    <Button Grid.Column="1" Grid.Row="1" Margin="5">Go go go area</Button>
  </Grid>
</window>

PS:很抱歉偷了你的饼干!OMNOMNOMNOM!!!

标签: wpflistview

解决方案


有两种方法 1.设置 GridViewColumn 的 ActualWidth 并且你必须添加一个边框

        <ListView.View>

            <GridView >

                <GridViewColumn Header="Name"   Width="200" x:Name="column">

                    <GridViewColumn.CellTemplate>

                        <DataTemplate>

                            <TextBlock Text="{Binding Name}" TextAlignment="Center" MinWidth="{Binding Path=ActualWidth,ElementName=column}"/>

                        </DataTemplate>

                    </GridViewColumn.CellTemplate>

                </GridViewColumn>

                <GridViewColumn Header="GetRes"  Width="120" x:Name="sss">

                    <GridViewColumn.CellTemplate>

                        <DataTemplate>

                            <Border  MinWidth="{Binding Path=ActualWidth,ElementName=sss}">

                                <CheckBox IsChecked="{Binding IsReceive}" HorizontalAlignment="Center"/>

                            </Border>

                        </DataTemplate>

                    </GridViewColumn.CellTemplate>

                </GridViewColumn>

            </GridView>

        </ListView.View>

    </ListView>

2.设置风格

    <Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">

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

    </Style>

推荐阅读