2012-12-12 80 views
0

我将图像添加到listview.items,我想知道是否有方法来更改每个项目的宽度?现在它跨越了整个列表视图,我想使它成为图像的宽度,所以我可以适合每行几个。编辑列表视图项宽度

回答

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); 
+0

这是WinForms ListView控件不适用于Windows应用商店应用程序 –

+0

哦,我的错,我没有注意到标签。 –

0

我想具体回答你的问题是,你只需要设置Stretch =为您添加作为ListViewItem的图像资产无。例如,下面的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> 

enter image description here

但是,这是一个脆弱的解决方案,因为你需要填充每个ListViewItem的里面的一些项目潜在的变量数其他容器(如这里的StackPanel),如果 - 如你所说 - 你想适合'每行'几个。

根据你正在寻找的效果,你可能想要考虑一些替代控制方法,如GridView和VariableSizedWrapGrid。看看Jerry Nixon's post,您可以获得更灵活和吸引人的演示。

+0

感谢您的回复。我认为一个gridview会更好,但我有一个问题 这些项目不占用整行,但他们正在向下如何让他们填满一行,然后创建一个新的行。 – shady

+0

您需要为GridView设置ItemsPanelTemplate并将方向设置为水平 –

+0

谢谢!最后一个问题。我希望进入GridView的图像底部有一些文本,但Image控件没有内容或文本属性。有什么我可以添加到图像控制? – shady