Ho un semplice ListView
e desidero ordinare i contenuti in ordine numerico o alfabetico, in ordine crescente o decrescente. La scelta viene da un menu a tendina. Capisco che posso usare CollectionViewSource
per raggiungere l'ordinamento, ma come posso modificare SortDescription o direzione al volo?Cambia visualizzazione elenco ordina Proprietà/Direzione solo XAML
Aggiornamento:
Ok, quindi ho installato i miei CVS come così, il ViewModel è ciò che il ListView è al momento legato. Richiedo che PropertyName sia associato alla proprietà dell'articolo della casella combinata attualmente selezionata PropertyName
. La casella combinata è associata a un elenco personalizzato che espone il nome proprietà su cui voglio ordinare.
Si lamenta il PropertyName che im tentare di utilizzare:
A 'vincolante' non può essere impostato sulla proprietà 'PropertyName' di tipo 'SortDescription'. Un 'Binding' può essere impostato solo su DependencyProperty di DependencyObject.
<CollectionViewSource Source="{StaticResource viewModel.ListValues}" x:Key="cvs">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="{Binding Path=SortPropertyName, Source=comboSort}"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
<ListView ItemsSource="{Binding Source={StaticResource cvs}}" />
è possibile rimuovere la vecchia descrizione sorta quindi aggiungere la nuova descrizione ordinamento (con il diverso di confronto) ed infine chiamare aggiornamento sulla CollectionViewSource – punker76
voglio per fare questo solo in XAML, cioè senza codice (il codice in ViewModel è accettabile) – Chris
sì, poi lo fai, il tuo menu a tendina si lega a una proprietà sul tuo viewmodel e dopo aver cambiato la selezione puoi cambiare la tua CollectionViewSource (la tua lista w si collega alla CollectionViewSource) – punker76