使用文本和图像WPF / C#动态填充ListView

时间:2012-10-07 14:15:24

标签: c# wpf image listview

我对.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酋长

2 个答案:

答案 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; }
}