我正在向 listview.items 添加图像,我想知道是否有办法更改每个项目的宽度?现在它跨越了整个列表视图,我想让它成为图像的宽度,这样我可以每行放几个。
问问题
509 次
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 回答