C#。 WPF。 observablecollection如何获取当前项目

时间:2011-07-29 09:25:25

标签: c# wpf listview observablecollection

这是我的收藏:

ObservableCollection<CheckInData> _CheckInCollection = new ObservableCollection<CheckInData>();
public ObservableCollection<CheckInData> CheckInCollection
{
    get { return _CheckInCollection; }
}

public class CheckInData
{
    public string RoomNumber { get; set; }
    public string Price { get; set; }
    public string Currecny { get; set; }
    public string Discount { get; set; }
    public string CheckOut { get; set; }
    public string TotalDay { get; set; }
    public decimal TotalPrice { get; set; }
    public int CheckOutYear { get; set; }
    public int CheckOutMonth { get; set; }
    public int CheckOutDay { get; set; }
    public Boolean IncToday { get; set; }
    public string CheckIn { get; set; }
    public decimal MoneyRate { get; set; }
}

我有一个课程,我以这种方式保存导出我的收藏:

foreach (CheckInData coll in CheckInCollection)
{
    var roomType = (from d in db.SelectRooms where d.roomnumber == coll.RoomNumber select d.roomtype).SingleOrDefault();
    inv._RoomType.Add(roomType.ToString());
    inv._RoomNumber.Add(coll.RoomNumber.ToString());
    inv._CheckIn.Add(coll.CheckIn);
    inv._CheckOut.Add(coll.CheckOut);
    inv._DayNight.Add(coll.TotalDay);
    inv._RoomPrice.Add(coll.Price);
    inv._Discount.Add(coll.Discount);
}

此代码完美无缺。我有列表视图绑定到这个可观察的集合,所以我的问题是我如何插入inv._RoomTypeinv._RoomNumber ...只有那些(行)在listview中被选中的集合。 inv._RoomNumber.Add(coll.RoomNumber(listview selected items? ??))谢谢

2 个答案:

答案 0 :(得分:2)

您需要将一个IsSelected属性添加到CheckInData类,然后绑定到ListView中的属性。然后你可以说

foreach (CheckInData coll in CheckInCollection.Where(s => s.IsSelected))
{
 ...

答案 1 :(得分:0)

根据您的描述,我猜您必须从ListView UI控件中获取所有选定的项目。

如果是这样,ListView提供了两个属性:ListView.SelectedItem或ListView.SelectedItems,具体取决于您是否启用了多选。

我们假设你想多选这些项目。然后,以下代码将帮助您解决问题:

foreach(var item in listView.SelectedItems) 
    YourClass.Insert(item as CheckInData);