Xamarin Listview筛选指南

Xamarin Listview筛选指南,listview,xamarin,filtering,Listview,Xamarin,Filtering,使用Xamarin开发我的第一个应用程序。我已经创建了一个带有母版页的跨平台移动应用程序 我已经在ItemsPage.xaml上运行了我的列表,我可以使用ListView上方的搜索栏过滤列表 我想扩展这个能力。我的列表中的每个项目都有一个类型,或与之关联的多个类型。我在一个SQLLite数据库中得到了这个 我想在每种类型旁边有一个开关控件。这是他们可以设置的,它会过滤列表。我对编写实际的过滤过程很有信心,但我不确定如何继续 下面Jason的评论引导我使用了一个模式页面 我已使用以下选项设置了模式

使用Xamarin开发我的第一个应用程序。我已经创建了一个带有母版页的跨平台移动应用程序

我已经在ItemsPage.xaml上运行了我的列表,我可以使用ListView上方的搜索栏过滤列表

我想扩展这个能力。我的列表中的每个项目都有一个类型,或与之关联的多个类型。我在一个SQLLite数据库中得到了这个

我想在每种类型旁边有一个开关控件。这是他们可以设置的,它会过滤列表。我对编写实际的过滤过程很有信心,但我不确定如何继续

下面Jason的评论引导我使用了一个模式页面

我已使用以下选项设置了模式页面:

    <Grid Margin="0" Padding="0">
    <Grid.RowDefinitions>
        <RowDefinition Height="40" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="100" />
    </Grid.ColumnDefinitions>
    <Button x:Name="btn_CommitChanges" Text="Save Filters" Clicked="btn_CommitChanges_OnClicked" Grid.Row="0" Grid.Column="0"></Button>
    <Button x:Name="btn_CancelChanges" Text="Cancel" Clicked="btn_CancelChanges_OnClicked" Grid.Row="0" Grid.Column="1"></Button>
    <ScrollView Grid.ColumnSpan="2" Grid.Row="1" Grid.Column="0">>
        <ListView x:Name="CategoriesListView" 
            ItemsSource="{Binding Categories}"
            VerticalOptions="FillAndExpand"
            HasUnevenRows="true"
            RefreshCommand="{Binding LoadCategoriesCommand}"
            IsRefreshing="{Binding IsBusy, Mode=OneWay}"
            CachingStrategy="RecycleElement">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal">
                            <Switch IsToggled="{Binding isSelected}" Toggled="OnSwitchToggled" x:Name="{Binding CategoryType}"></Switch>
                            <Label Text="{Binding CategoryType}" />
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </ScrollView>
</Grid>

总之,主要问题是如何在OnClick事件中生成与启用的开关控件关联的值数组,或者如何确定切换了哪个开关这并不是一个真正有明确答案的问题。我可能会建议将过滤器用户界面置于点击按钮后弹出的模式。听起来是个不错的建议。如果我想把按钮放在搜索栏旁边,我会怎么做?类似于[BTN][Search Bar-----]的东西也是弹出的模式,它是如何工作的?这是另一页吗?如果不是很快,我会用谷歌搜索,但我猜你可能知道,我可以用它作为答案。
        public void btn_CommitChanges_OnClicked(object sender, EventArgs e)
    {
        //SAVE SETTINGS TO USER CONFIGURATION
        Navigation.PopModalAsync();
    }

    protected void OnSwitchToggled(object sender, EventArgs e)
    {
        Switch sw = (Switch)sender;
        //How to get which Switch Control Toggled
    }