Podczas mojej podróży do nauki MVVM poznałem podstawową wiedzę na temat WPF i wzorca ViewModel. Używam poniższej abstrakcji, gdy dostarczam listę i interesuje mnie jeden wybrany przedmiot.Zarządzanie wieloma wyborami za pomocą MVVM
public ObservableCollection<OrderViewModel> Orders { get; private set; }
public ICollectionView OrdersView
{
get
{
if(_ordersView == null)
_ordersView = CollectionViewSource.GetDefaultView(Orders);
return _ordersView;
}
}
private ICollectionView _ordersView;
public OrderViewModel CurrentOrder
{
get { return OrdersView.CurrentItem as OrderViewModel; }
set { OrdersView.MoveCurrentTo(value); }
}
mogę następnie powiązać OrdersView wraz ze wspierającą sortowania i filtrowania do listy w WPF:
<ListView ItemsSource="{Binding Path=OrdersView}"
IsSynchronizedWithCurrentItem="True">
To działa bardzo dobrze dla pojedynczych widoków selekcji. Ale chciałbym również obsługiwać wiele wyborów w widoku i powiązać model z listą wybranych elementów.
W jaki sposób powiązać ListView.SelectedItems z właściwością backer na ViewModel?
Należy zauważyć, że to rozwiązanie nie działa, gdy używany jest VirtualizingStackPanel w liście listBox (która jest domyślna). Więcej informacji pod tym postem: http://stackoverflow.com/questions/1273659/virtualizingstackpanel-mvvm-multiple-selection – decasteljau
Dobry połów. Dziękuję za aktualizację. W przypadku pojedynczego wyboru najlepszym rozwiązaniem jest ICollectionView. Microsoft musi stworzyć interfejs ICollectionView, który obsługuje selekcje wielokrotne. –
Właśnie uratowałeś mi życie! – jpsstavares