简体   繁体   English

C#-Xamarin表单在切换时删除列表视图项

[英]C# - Xamarin forms remove listview item on toggle

So, I want to remove the item in my listview that I toggled. 因此,我想在切换的列表视图中删除该项目。 I have a listview like this: 我有这样的列表视图:

结果

Now I want that when I click something to be selected, that it will be removed from the listview, but the users must have a pop-up prompted first in which states if the user is really sure if the item can be deleted. 现在,我希望在单击要选择的内容时将其从列表视图中删除,但是用户必须首先弹出一个提示,其中指出用户是否确实确定是否可以删除该项目。

Here is my code that I have now: 这是我现在拥有的代码:

private async void Switch_Toggled(object sender, ToggledEventArgs e)
        {
            Tasks task = (sender as Switch).BindingContext as Tasks;
            await ApiManager.UpdateTasksFromListAsync(task);
        }

This just updates a value on the API. 这只是更新API上的值。 But how can I remove/hide it from the listview? 但是,如何从列表视图中删除/隐藏它呢?

This is the xaml code: 这是xaml代码:

<ListView x:Name="lvwDetailPage" SeparatorVisibility="None">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="70" />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition />
                        </Grid.RowDefinitions>

                        <Switch IsToggled="{Binding completed}" Grid.Column="0" Toggled="Switch_Toggled" />
                        <Label Grid.Column="1" Text="{Binding title}" TextColor="#212121" VerticalOptions="Center" Margin="10,0" />

                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    ObservableCollection<Tasks> TaskList;

    private async Task GetData(long id)
    {
        List<Tasks> tasks = await ApiManager.GetTasksFromListAsync(id);

        TaskList = new ObservableCollection<Tasks>(tasks);

        lvwDetailPage.ItemsSource = TaskList;

        lvwDetailPage.ItemSelected += LvwDetailPage_ItemSelected;
    }

    private async void Switch_Toggled(object sender, ToggledEventArgs e)
    {
        Tasks task = (sender as Switch).BindingContext as Tasks;

        if (task != null)
        {
            await ApiManager.UpdateTasksFromListAsync(task);
            TaskList.Remove(task);
        }          
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM