使用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开关控件关联的值数组,或者如何确定切换了哪个开关