wpf - ListView 中的图像未完全居中
问题描述
我正在尝试在 ListView 中显示图像列表。我希望这些图像显示在“项目”的中心。
我试图通过将各自的 VerticalAlignment 和 HorizontalAlignment 设置为中心来实现这一点。这并没有给我想要的结果。当一个项目被选中时,您可以清楚地看到左侧更大的“蓝色”区域。
我错过了什么吗?
我的代码:
<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!!!
解决方案
有两种方法 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>
推荐阅读
- pytorch - 减小割炬张量
- android - autoMirrored 属性在 jetpack compose 中不起作用
- python - 如何将 numpy 数组作为 csv 写入 S3
- bash - 验证输入的 shell 包含三个用逗号分隔的数字
- c# - 在 IdentityServer4/AspnetIdentity JwtToken 中包含声明
- react-grid-layout - 以编程方式更改布局后如何更新网格?
- python - 具有组合框外键的问题数据库
- javascript - 如何将作为道具传递的两个函数添加到 React 和 Material UI 中的 onChange 事件?
- c++ - 为什么高级语言被认为比低级语言慢?
- https - ESP 8266 在同一个客户端上多次获取调用?