Estou em uma situação em que tenho uma lista de itens que precisam ser exibidos, dependendo de suas propriedades. O que eu não tenho certeza é onde é o melhor lugar para colocar a lógica de filtragem / agrupamento do estado do viewmodel?
Atualmente eu tenho isso na minha opinião usando conversores, mas não tenho certeza se eu deveria ter a lógica no viewmodel?
por exemplo,
Camada ViewModel:
class ItemViewModel
{
DateTime LastAccessed { get; set; }
bool IsActive { get; set; }
}
class ContainerViewModel
{
ObservableCollection<Item> Items {get; set;}
}
Visualizar camada:
<TextView Text="Active Items"/>
<List ItemsSource={Binding Items, Converter=GroupActiveItemsByDay}/>
<TextView Text="Active Items"/>
<List ItemsSource={Binding Items, Converter=GroupInActiveItemsByDay}/>
ou devo construí-lo assim?
Camada ViewModel:
class ContainerViewModel
{
ObservableCollection<IGrouping<string, Item>> ActiveItemsByGroup {get; set;}
ObservableCollection<IGrouping<string, Item>> InActiveItemsByGroup {get; set;}
}
Visualizar camada:
<TextView Text="Active Items"/>
<List ItemsSource={Binding ActiveItemsGroupByDate }/>
<TextView Text="Active Items"/>
<List ItemsSource={Binding InActiveItemsGroupByDate }/>
Ou talvez algo entre?
Camada ViewModel:
class ContainerViewModel
{
ObservableCollection<IGrouping<string, Item>> ActiveItems {get; set;}
ObservableCollection<IGrouping<string, Item>> InActiveItems {get; set;}
}
Visualizar camada:
<TextView Text="Active Items"/>
<List ItemsSource={Binding ActiveItems, Converter=GroupByDate }/>
<TextView Text="Active Items"/>
<List ItemsSource={Binding InActiveItems, Converter=GroupByDate }/>
Eu acho que minha pergunta é o que é uma boa prática em termos de qual lógica colocar no ViewModel e que lógica colocar na Binding na View, já que eles parecem se sobrepor um pouco?