的CollectionViewSource.GetDefaultView()
方法是在Silverlight 3在WPF不我有这样的扩展方法:CollectionViewSource.GetDefaultView不在Silverlight 3中!什么是解决方法?
public static void SetActiveViewModel<ViewModelType>(this ViewModelBase viewModel,
ViewModelType collectionItem,
ObservableCollection<ViewModelType> collection) where ViewModelType : ViewModelBase
{
Debug.Assert(collection.Contains(collectionItem));
ICollectionView collectionView = CollectionViewSource.GetDefaultView(collection);
if(collectionView != null) collectionView.MoveCurrentTo(collectionItem);
}
怎么可以这样写在Silverlight 3?
这不起作用。既然你已经创建了一个CollectionViewSource的新实例,你将得到一个没有任何绑定的View。因此MoveCurrentTo没有影响。在绑定到集合的WPF控件中,实际上会绑定到该集合的默认视图,原始代码将获取该默认视图并对其进行操作,从而影响绑定到该集合的任何东西。 – AnthonyWJones 2010-03-27 21:49:17