我目前有数据绑定工作在集合视图上以显示我的所有按钮。
然而,由于我的收藏清单中有超过24个项目,我想在同一页面上添加四个按钮(开胃菜,早餐,午餐,晚餐),并根据我点击的那个过滤。这样我一次只显示其中的一些选项。
我应该在ViewModel中处理这个吗?或者这应该是对网页浏览的责任吗?
MenuItem类:
public enum type
{
Appetizer,
Breakfast,
Lunch,
Dinner
};
class MenuItem
{
//stuff
}
MenuItemsPage:
public sealed partial class MenuItemsPage : Page
{
public MenuItemsPage()
{
this.InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string tableName = e.Parameter as string;
this.DataContext = new MenuPageVM(tableName); //this returns List<MenuItem> 24 items. All 4 types of MenuItems
}
}
}
XAML:
<CollectionViewSource x:Key="MenuItemsCollectionViewSource" Source="{Binding MenuItems}"/>
<GridView SelectionMode="None"
x:Name="menuGrid" ItemsSource="{Binding Mode=OneTime, Source={StaticResource MenuItemsCollectionViewSource}}" Margin="256,113,320,184"
ItemTemplate="{StaticResource MenuButtonTemplate}"/>
答案 0 :(得分:1)
在视图模型中保留属性AllItems。在按钮单击时,可以调用视图模型中的方法来进行过滤。
public void Filter(type filterType)
{
MenuItems.Clear();
foreach(var item in AllItems)
{
if(item.type == filterType)
{
MenuItems.Add(item);
}
}
}
仅当MenuItems是ObservableCollection时,更改才会反映在UI中。