Sono in una situazione in cui ho un elenco di elementi che devono essere visualizzati a seconda delle loro proprietà. Quello di cui non sono sicuro è dove è il posto migliore per mettere la logica di filtraggio / raggruppamento dello stato di viewmodel?
Attualmente ce l'ho a mio avviso usando i convertitori, ma non sono sicuro che dovrei avere la logica nel viewmodel?
per es.
ViewModel Layer:
class ItemViewModel
{
DateTime LastAccessed { get; set; }
bool IsActive { get; set; }
}
class ContainerViewModel
{
ObservableCollection<Item> Items {get; set;}
}
Visualizza livello:
<TextView Text="Active Items"/>
<List ItemsSource={Binding Items, Converter=GroupActiveItemsByDay}/>
<TextView Text="Active Items"/>
<List ItemsSource={Binding Items, Converter=GroupInActiveItemsByDay}/>
o dovrei costruirlo in questo modo?
ViewModel Layer:
class ContainerViewModel
{
ObservableCollection<IGrouping<string, Item>> ActiveItemsByGroup {get; set;}
ObservableCollection<IGrouping<string, Item>> InActiveItemsByGroup {get; set;}
}
Visualizza livello:
<TextView Text="Active Items"/>
<List ItemsSource={Binding ActiveItemsGroupByDate }/>
<TextView Text="Active Items"/>
<List ItemsSource={Binding InActiveItemsGroupByDate }/>
O forse qualcosa in mezzo?
ViewModel Layer:
class ContainerViewModel
{
ObservableCollection<IGrouping<string, Item>> ActiveItems {get; set;}
ObservableCollection<IGrouping<string, Item>> InActiveItems {get; set;}
}
Visualizza livello:
<TextView Text="Active Items"/>
<List ItemsSource={Binding ActiveItems, Converter=GroupByDate }/>
<TextView Text="Active Items"/>
<List ItemsSource={Binding InActiveItems, Converter=GroupByDate }/>
Credo che la mia domanda sia: che cosa è una buona pratica in termini di quale logica inserire nel ViewModel e quale logica inserire nel Binding nella View, poiché sembrano sovrapporsi un po '?