我想将我的对象添加到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>
答案 0 :(得分:3)
按如下方式定义集合:
public ObservableCollection<Data> dataList { get; set; }
在构造函数中初始化它,并根据您的需要添加元素。 设置窗口的数据上下文:
this.DataContext = this;
然后数据将其绑定在xaml:
中<ListView Name="myListView"
ItemsSource="{Binding dataList}"/>
它应该可以工作,你应该看到两个元素都已添加。
对于您的特定情况,请不要将集合添加到Items,而是设置ListView的ItemsSource。
myListView.ItemsSource = collection;