我对.NET 4.0中的listview控件感到非常沮丧。我想将文本添加到行的第一列,然后将图像添加到第二列,然后将文本添加到第3列(全部在顶行),然后对下一行执行相同操作。但是我的代码只是将文本添加到顶行的所有三列,然后将图像添加到下一行,然后将文本添加到下一行。我无法弄清楚如何指定行/列索引(例如[1,2]为第二行第三列)。
我知道这看起来是一个非常基本的查询,并且有很多信息,但我是.NET新手,我读的越多,我就越困惑: - (
我的c#代码是:
ListViewItem lstItem1 = new ListViewItem();
lstItem.Content = "Picture 1";
lstView.Items.Add(lstItem);
Image lstImage = new Image();
ListViewItem lstItem2 = new ListViewItem();
lstItem2.Source = SrcBmp;
lstItemImage.Content = lstImage;
lstView.Items.Add(lstItem2);
ListViewItem lstItem3 = new ListViewItem();
lstItem3.Content = "Blah blah";
lstView.Items.Add(lstItem3);
XAML:
<ListView Height="412" HorizontalAlignment="Left" Margin="312,49,0,0" Name="lstView" VerticalAlignment="Top" Width="636" ItemsSource="{Binding}" FontSize="12">
<ListView.View>
<GridView>
<GridViewColumn Header="Photo No." Width="50"/>
<GridViewColumn Header="Photo" Width="150"/>
<GridViewColumn Header="Description" Width="300"/>
</GridView>
</ListView.View>
</ListView>
非常感谢提前。
Wiggum酋长
答案 0 :(得分:1)
您必须为Content属性创建StackPanel
,并将图像和文本添加到该StackPanel。
e.g。
<Window.Resources>
<DataTemplate x:Key="ItemTemplate">
<StackPanel Orientation="Horizontal">
<Image Width="10" Height="10" Stretch="Fill" Source="{Binding Cover}"/>
<Label Content="{Binding Title}" />
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid x:Name="grid">
<ListView ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Albums}" />
</Grid>
答案 1 :(得分:0)
您添加了3行并获得了3行。不应该是一个惊喜。
ListViewItem只有一个内容。
你需要拥有一个具有这两个属性的类或支柱 然后将这些对象添加到像List这样的集合中,并将ListView绑定到集合中 然后在GridViewColumn中,绑定路径是属性的名称。
public class Album
{
public string Title { get; set; }
public Image Img { get; set; }
}