Xamarin Listview过滤指南

时间:2018-04-18 23:27:01

标签: listview xamarin filtering

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

我的列表正在使用ItemsPage.xaml我可以使用ListView上方的SearchBar过滤列表。

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

我希望每种类型的Switch Controls都有这个类型列表。这将是他们可以设置的东西,它会过滤列表。我对编码实际的过滤器过程非常有信心,但我不确定如何继续。

以下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>

我可以看到切换切换,但我不知道如何识别正在切换的切换。理想情况下,我不需要知道,我可以通过“保存过滤器”按钮收集启用哪些开关控件。

        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
    }

总结中,主要问题是我如何在OnClick事件中创建与我的Enabled开关控件关联的值数组,或者如何确定切换了哪个开关

0 个答案:

没有答案