通过DisplayActionSheet删除ListView项

问题描述 投票:0回答:1

我正在Visual Studio 2017 Xamarin.forms上创建一个ListView应用程序,它向我显示了我的债务列表。我添加了一个来自“Dispalying Pop-ups”Microsoft Xamarin网站的DisplayActionSheet。如何通过DisplayActionSheet删除ListView项?

我的DisplayActionSheet看起来像这样:

private async void DebtsList_ItemTapped(object sender, ItemTappedEventArgs e)
    {
        var action = await DisplayActionSheet("Details", "Close", null, "Cash", "Delete","");
        Debug.WriteLine("Action: " + action);
    }

这是我的ListView向我展示我的所有债务:

<ListView x:Name="DebtsList"
              ItemsSource="{Binding DebtEntries}" 
              CachingStrategy="RecycleElement" 
              Grid.Row="7" 
              Grid.ColumnSpan="3" 
              Grid.RowSpan="15"                  
              HasUnevenRows="True"
              ItemTapped="DebtsList_ItemTapped">
    <ListView.Header>
      <Grid BackgroundColor="White" Margin="7">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*"/>
          <ColumnDefinition Width="*"/>
          <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
          <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>
        <Label Text="Name" FontSize="11" FontAttributes="Bold" TextColor="#4a4a4a" Grid.Row="0" Grid.Column="0" />
        <Label Text="Usage" FontSize="11" FontAttributes="Bold" TextColor="#4a4a4a" Grid.Row="0" Grid.Column="1" />
        <Label Text="Value" FontSize="11" FontAttributes="Bold" TextColor="#4a4a4a" Grid.Row="0" Grid.Column="2" HorizontalOptions="End"/>
      </Grid>
    </ListView.Header>
    <ListView.ItemTemplate>
      <DataTemplate>
        <ViewCell>
          <Grid BackgroundColor="White" Margin="7">
            <Grid.RowDefinitions>
              <RowDefinition Height="*"/>
              <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
              <ColumnDefinition Width="*"/>
              <ColumnDefinition Width="*"/>
              <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Label Text="{Binding Name}" 
                     Grid.Row="0"
                     Grid.Column="0"
                     FontSize="10"
                     TextColor="#4a4a4a"/>
            <Label Text="{Binding Usage}" 
                     Grid.Row="0" 
                     Grid.Column="1"
                     FontSize="10"
                     TextColor="#4a4a4a"/>
            <Label Text="{Binding Value}"
                     Grid.Row="0"
                     Grid.Column="2"
                     FontSize="10"
                     TextColor="#F33E3E"                         
                     FontAttributes="Bold"
                     HorizontalOptions="End"/>
            <Label Text="{Binding CreationDate}" 
                     Grid.Row="1" 
                     Grid.Column="0"
                     FontSize="10"
                     TextColor="#4a4a4a"/>
          </Grid>
        </ViewCell>
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>
c# android xaml listview xamarin.android
1个回答
0
投票

解:

private async void ListView_ItemTapped(object sender, ItemTappedEventArgs e)
{
   string result= await  DisplayActionSheet("Details", "Close", null, "Cash", "Delete", "");

   if(result=="Delete")
    {
        int position = DebtsList.TemplatedItems.GetGlobalIndexOfItem(e.Item);

        mySource.RemoveAt(position);

        DebtsList.ItemsSource = mySource;

    }
}

mySource是DebtsList的ItemsSource,就像

public ObservableCollection<DebtEntries> mySource { get; set; }

. . .

mySource = new ObservableCollection<DebtEntries>();
mySource.Add(new DebtEntries { Name = "xxx", Usage="xxx",Value="xxx",CreationDate="xxx"});
//. . .
DebtsList.ItemsSource = mySource;
© www.soinside.com 2019 - 2024. All rights reserved.