在我的Silverlight-4应用程序中,我有一个PagedCollectionView。最后,我想将一个新项目添加到它的源代码中。不幸的是,我没有找到如何做到这一点的例子。
AddNew()方法不包含任何参数。
CurrentAddItem是只读的。
SourceCollection是一个IEnumerable<>。
我没有想到,像向集合添加元素这样简单、标准的任务会如此复杂。我没有找到任何如何做到这一点的例子。谁能给我举个例子,如何在PagedCollectionView中添加元素?
提前谢谢你,
弗兰克
发布于 2011-06-24 20:37:58
MyObject newO = (MyObject)_PagedList.AddNew();
newO.SetProperty="Make the changes to the object";
_PagedList.CommitNew(); 发布于 2011-06-24 20:45:12
除了直接操作PagedCollectionView之外,您还可以使用MVVM来实现您的功能(这是一个很好的例子,说明了MVVM如何通过消除深入挖掘UI内部的需要来帮助简化工作)。
PagedCollectionView就是这样一个视图。应该有一个ObservableCollection来支持它。向该可观察集合添加新项将自动将其添加到视图中。这对于可能公开可观察集合的ViewModel非常有效。
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中,将按钮绑定到Orders,并创建一个绑定到AddOrderCommand的PagedCollectionView。您的视图应使用新订单进行更新。
https://stackoverflow.com/questions/6467802
复制相似问题