在我的Silverlight-4-App中,我有一个PagedCollectionView。最后,我想在它的源头添加一个新项目。不幸的是,我没有找到如何做到这一点的例子。
AddNew()方法不包括参数。
CurrentAddItem是readonly。
SourceCollection是一个IEnumerable<>。
我没想到,像向系列中添加元素这样简单的标准任务可能会非常复杂。我没有找到任何例子如何做到这一点。任何人都可以给我一个例子,如何将一个元素添加到PagedCollectionView?
提前致谢,
弗兰克
答案 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。您的视图应使用新订单进行更新。