如何从Xamarin Forms ListView中删除项目?

Pure.Krome

我正在尝试从中删除项目/行,ListView但困难是我还需要传递一些委托或引发某些事件或某些事情,因此当某人单击按钮以删除该行时,我的代码会处理其他逻辑,其他地方(例如,从数据库中删除该项目或其他)。

我有一个自定义控件:

public class SportsTeam : StackLayout { .. }

在此控件内部,其中一个元素是,ListView它列出运动团队中的所有人员。

var viewModel = teamMembers.Select(x => new SportsTeamViewModel(x));

return new ListView
{
    HasUnevenRows = true,
    ItemSource = viewModel,
    ItemTemplate = new DataTemplate(typeof(SportsTeamViewCell)); 
};

在内部,SportsTeamViewCell我有以下内容:

private Grid CreateContent()
{
    var grid = new Grid();
    // Setup row and column definitions.
    // Add items to the Grid 
    grid.Children.Add(...);

    var removeButton = RemoveButton;
    grid.Children.Add(removeButton);
    Grid.SetRowSpan(removeButton, 2);

    return grid;
}

private Button RemoveButton
{
    get
    {
        var button = new Button
        {
            Image = "Icons/remove.png"
        };

        return button;
    }
}

从这里开始,我不知道如何使按钮触发事件或可以通过构造函数传递一些删除,因此对要删除的单个单元格/行/项目执行了一些自定义逻辑。

罗希特·维平·马修斯(Rohit Vipin Mathews)

您可以执行以下操作:

这是我的模型课:

public class Item  
{  
   public string ItemName { get; set; }  
   public string ItemDetails { get; set; }  
}  

在我的XAML中,或者您也可以用代码编写此代码,将其绑定到Command ParameterItem模板的:

<Button Text="Delete" CommandParameter="{Binding ItemName}" Clicked="DeleteClicked"></Button>

完整项目模板如下所示:

<ListView.ItemTemplate>  
            <DataTemplate>  
               <ViewCell>  
                  <ViewCell.View>  
                     <StackLayout Orientation="Horizontal">  
                        <Label Text="{Binding ItemName}" HorizontalOptions="StartAndExpand" FontSize="30"></Label>  
                        <Button Text="Delete" CommandParameter="{Binding ItemName}" Clicked="DeleteClicked">        
                        </Button>  
                     </StackLayout>  
                  </ViewCell.View>  
               </ViewCell>  
            </DataTemplate>  
         </ListView.ItemTemplate>    

在您的代码文件中,您可以执行以下操作:

public void DeleteClicked(object sender, EventArgs e)  
{  
   var item = (Xamarin.Forms.Button)sender;  
   Item listitem = (from itm in allItems 
                    where itm.ItemName == item.CommandParameter.ToString() 
                    select itm)
                   .FirstOrDefault<Item>();  
   allItems.Remove(listitem);  
}  

重要提示:这只会从绑定的集合中删除该项目。要将其从原始列表中删除,您需要使用ObservableCollection

这是说明的方案的完整源代码-使用XAMARIN.FORMS在Listview中处理子控件事件

另外,教程-如何使用Xamarin.Forms为自定义ListView处理行中的行选择和删除行中的按钮,还说明了从中删除listview

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Xamarin.Forms禁用ListView中的项目

如何在Xamarin.forms xaml中水平显示ListView中的项目?

如何在 Xamarin Forms 中删除我的 ListView 中的额外分隔符

如何在 Xamarin Forms 中的其他项目之上(之上)显示 ListView?

如何在 Xamarin Forms 中使用 MVVM 在 ListView 中实现增量加载(ItemAppearing)项目?

如何在Xamarin Forms中以2列和n行显示单个listview项目

Xamarin.Forms:当单击ListView中的项目时,如何显示模态?

Xamarin.Forms ListView中项目之间的填充

从Xamarin.Forms中的列表/ ObservableCollection中删除项目

如何在ListView Items Xamarin Forms UWP中删除鼠标悬停效果?

用于删除Xamarin.Forms中当前ListView行的按钮

Xamarin.Forms ListView,如何设置RowHeight?

Xamarin Forms Listview 中的 TapGestureRecognition

如何删除Xamarin.Forms导航栏?

如何在Xamarin Forms应用程序(android)中仅激活1个ListView项目并禁用其他项目

Xamarin.Forms:StackLayout中的ListView:如何设置高度?

如何在Xamarin.Forms中的ListView内绑定列表

如何更改 Xamarin Forms 中 `ListView` 内 `TextCell` 的背景颜色?

如何在xamarin.forms中获得ListView的子级?

Xamarin Forms-如何在ListView中显示/绑定列表?

Xamarin Forms - 如何在 xaml 中创建水平 ListView?

如何在Xamarin Forms中合并C项目?

如何从 Xamarin Forms 的页面中删除点击事件?

如何从Xamarin.Forms的AbsoluteLayout中删除子级?

如何从ViewModel中删除方法的执行-Xamarin.Forms-MVVM

Xamarin Forms 如何从 android 中删除调试版本

xamarin.forms中的导航如何工作?

如何使CommandBar在Xamarin Forms UWP中呈现?

如何在Xamarin中删除从ListView中选择的项目