collection 的 GridView 过滤器按钮
GridView Filter buttons for collection
我目前在 collection 视图上进行数据绑定以显示我的所有按钮。
但是由于我的 collection 列表中有超过 24 个项目,我想在同一页面上添加四个按钮(开胃菜、早餐、午餐、晚餐)并根据我点击的按钮进行过滤。这样我一次只显示其中的几个选择。
我应该在 ViewModel 中处理这个吗?或者这应该是综合浏览量的责任吗?
菜单项class:
public enum type
{
Appetizer,
Breakfast,
Lunch,
Dinner
};
class MenuItem
{
//stuff
}
菜单项页面:
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}"/>
在视图模型中保留一个 属性 AllItems。单击按钮时,可以调用视图模型中的方法来进行过滤。
public void Filter(type filterType)
{
MenuItems.Clear();
foreach(var item in AllItems)
{
if(item.type == filterType)
{
MenuItems.Add(item);
}
}
}
仅当 MenuItems 是 ObservableCollection 时,更改才会反映在 UI 中。
我目前在 collection 视图上进行数据绑定以显示我的所有按钮。
但是由于我的 collection 列表中有超过 24 个项目,我想在同一页面上添加四个按钮(开胃菜、早餐、午餐、晚餐)并根据我点击的按钮进行过滤。这样我一次只显示其中的几个选择。
我应该在 ViewModel 中处理这个吗?或者这应该是综合浏览量的责任吗?
菜单项class:
public enum type
{
Appetizer,
Breakfast,
Lunch,
Dinner
};
class MenuItem
{
//stuff
}
菜单项页面:
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}"/>
在视图模型中保留一个 属性 AllItems。单击按钮时,可以调用视图模型中的方法来进行过滤。
public void Filter(type filterType)
{
MenuItems.Clear();
foreach(var item in AllItems)
{
if(item.type == filterType)
{
MenuItems.Add(item);
}
}
}
仅当 MenuItems 是 ObservableCollection 时,更改才会反映在 UI 中。