如何将元素添加到PagedCollectionView的源

时间:2011-06-24 12:28:59

标签: c# silverlight list

在我的Silverlight-4-App中,我有一个PagedCollectionView。最后,我想在它的源头添加一个新项目。不幸的是,我没有找到如何做到这一点的例子。

AddNew()方法不包括参数。

CurrentAddItem是readonly。

SourceCollection是一个IEnumerable<>。

我没想到,像向系列中添加元素这样简单的标准任务可能会非常复杂。我没有找到任何例子如何做到这一点。任何人都可以给我一个例子,如何将一个元素添加到PagedCollectionView?

提前致谢,
弗兰克

2 个答案:

答案 0 :(得分:2)

MyObject newO = (MyObject)_PagedList.AddNew(); 
newO.SetProperty="Make the changes to the object";
_PagedList.CommitNew(); 

答案 1 :(得分:1)

除了直接操作PagedCollectionView之外,您还可以使用MVVM来实现您的功能(这是一个完美的例子,说明MVVM如何通过消除挖掘UI内部的需要来帮助保持简单)。

PagedCollectionView就是一个View。应该有一个ObservableCollection支持它。向该可观察集合添加新项目将自动将其添加到视图中。这适用于可能会公开可观察集合的ViewModel,例如Orders

public class OrdersViewModel:INotifyPropertyChanged
{
  //Probably want to initialize this in a constructor to populate the collection
  private ObservableCollection<Order> _orders= new ObservableCollection<Order>();
  private ICommand _addOrder;

  public OrdersViewModel()
  {
    _addOrderCommand = new DelegateCommand(execute:(obj)=>AddOrder());
    //or use the relay command depending on which framework you're using
  }

  public ICommand AddOrderCommand{get {return _addOrder}};

  public ObservableCollection<Order> Orders
  {
    get{return _orders;}
    //I usually don't add a public setter for ObservableCollections
  }

  public void AddOrder()
  {
    //replace with your own logic of course
    _orders.Add(new Order());
  }
}

在您的XAML中,您将PagedCollectionView绑定到Orders并创建一个绑定到AddOrderCommand的Button。您的视图应使用新订单进行更新。