0

我正在向 listview.items 添加图像,我想知道是否有办法更改每个项目的宽度?现在它跨越了整个列表视图,我想让它成为图像的宽度,这样我可以每行放几个。

4

2 回答 2

0

我认为您的问题的具体答案是您只需为添加为 ListViewItem 的图像资产设置Stretch =None。例如,以下 XAML 会导致您在其后看到的显示:

    <ListView x:Name="lv" HorizontalAlignment="Left" Margin="153,206,0,0" VerticalAlignment="Top"  SelectionChanged="lv_SelectionChanged">
        <ListViewItem>
            <StackPanel Orientation="Horizontal">
                <Image Source="/Assets/SmallLogo.png"  Stretch="None" />
                <Image Source="/Assets/SmallLogo.png"  Stretch="None" />
                <Image Source="/Assets/SmallLogo.png"  Stretch="None" />
            </StackPanel>
        </ListViewItem>
        <ListViewItem>
            <Border BorderBrush="Aqua" BorderThickness="1" Background="Red">
                <Image Source="/Assets/Logo.png" Stretch="None" />
            </Border>
        </ListViewItem>
    </ListView>

在此处输入图像描述

但这是一个脆弱的解决方案,因为您需要在其他容器(如 StackPanel,此处)内填充每个 ListViewItem 可能可变数量的项目,如果 - 正如您所提到的 - 您想要适合“每行几个”。

根据您正在寻找的效果,您可能需要考虑一些替代控制方法,例如 GridView 和 VariableSizedWrapGrid。查看Jerry Nixon 的帖子,了解您可以实现的更灵活、更吸引人的演示文稿。

于 2012-12-12T07:10:23.360 回答
0

添加列时,您可以选择设置它们的宽度。

listView1.Columns.Add("Assigned To", -2, HorizontalAlignment.Left);
listView1.Columns.Add("Start Date", 112, HorizontalAlignment.Left);
listView1.Columns.Add("Date Began", 112, HorizontalAlignment.Left);
listView1.Columns.Add("Date Completed", 112, HorizontalAlignment.Left);
listView1.Columns.Add("Due Date", 112, HorizontalAlignment.Left);
listView1.Columns.Add("Description", 375, HorizontalAlignment.Left);
listView1.Columns.Add("CR", -2, HorizontalAlignment.Center);
listView1.Columns.Add("Confirmed By", -2, HorizontalAlignment.Left);
于 2012-12-12T04:12:17.720 回答