WPF:在我的ListView中添加几个对象 - 只添加第一个

时间:2015-05-31 20:47:32

标签: wpf listview

我想将我的对象添加到ListView

Public class MyData
{
    string name {get; set;}
}

这是我尝试在代码后面添加我的对象的方法:

ObservableCollection<MyData> collection = new ObservableCollection<MyData>();
            MyData data1 = new MyData("c:\file.doc");
            collection.Add(data1);
            myListView.Items.Add(collection);

这很好但如果我想添加另一个:

ObservableCollection<MyData> collection = new ObservableCollection<MyData>();
            MyData data1 = new MyData("c:\file.doc");
            collection.Add(data1);

            MyData data2 = new MyData("c:\blabla.doc");
            collection.Add(data2);

            myListView.Items.Add(collection);

我只能看到第一个对象。

ListView XAML:

    <ListView Name="myListView" Margin="16,453,263,40" Background="Transparent" BorderThickness="0" >
        <ListView.ItemContainerStyle>
            <Style TargetType="{x:Type ListViewItem}">
                <Setter Property="Foreground" Value="White"/>
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.Resources>
            <DataTemplate x:Key="MyDataTemplate">
                <Grid Margin="-6">
                    <ProgressBar Maximum="100" Value="{Binding Progress}" 
                                 Width="{Binding Path=Width, ElementName=ProgressCell}" Height="16" Margin="0"
                                 Foreground="#FF5591E8" />
                    <Label Content="{Binding Progress, StringFormat={}{0}%}" FontSize="12"
                           VerticalAlignment="Center" HorizontalAlignment="Center" />
                </Grid>
            </DataTemplate>
            <ControlTemplate x:Key="ProgressBarTemplate">
                <Label  HorizontalAlignment="Center" VerticalAlignment="Center" />
            </ControlTemplate>
        </ListView.Resources>
        <ListView.View>
            <GridView ColumnHeaderContainerStyle="{StaticResource ListViewHeaderStyle}">
                <GridViewColumn Width="425" Header="File name" DisplayMemberBinding="{Binding FileName}" />
                <GridViewColumn x:Name="ProgressCell"  Width="50" Header="Progress"
                                CellTemplate="{StaticResource MyDataTemplate}" />
            </GridView>
        </ListView.View>
    </ListView>

1 个答案:

答案 0 :(得分:3)

按如下方式定义集合:

public ObservableCollection<Data> dataList { get; set; }

在构造函数中初始化它,并根据您的需要添加元素。 设置窗口的数据上下文:

this.DataContext = this;

然后数据将其绑定在xaml:

<ListView Name="myListView"                 
          ItemsSource="{Binding dataList}"/>

它应该可以工作,你应该看到两个元素都已添加。

对于您的特定情况,请不要将集合添加到Items,而是设置ListView的ItemsSource。

myListView.ItemsSource = collection;