Pur*_*ome 6 c# listview xamarin xamarin.forms
我正在尝试从a中删除项目/行ListView但是踢球者是我还需要传递一些委托或者触发某些事件或某事,所以当一个人点击按钮删除该行时,我的代码会处理其他一些逻辑,其他地方(例如,从数据库中移除项目或其他).
我有一个自定义控件:
public class SportsTeam : StackLayout { .. }
Run Code Online (Sandbox Code Playgroud)
在这个控制中,其中一个元素ListView列出了体育团队中的所有人.
var viewModel = teamMembers.Select(x => new SportsTeamViewModel(x));
return new ListView
{
HasUnevenRows = true,
ItemSource = viewModel,
ItemTemplate = new DataTemplate(typeof(SportsTeamViewCell));
};
Run Code Online (Sandbox Code Playgroud)
在里面,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;
}
}
Run Code Online (Sandbox Code Playgroud)
从这里开始,我不知道如何制作它以便按钮触发事件或者可以通过construtor传递一些删除,因此针对要删除的单个单元格/行/项目执行一些自定义逻辑.
有人可以帮忙吗?
这是你可以做的:
这是我的模特课:
public class Item
{
public string ItemName { get; set; }
public string ItemDetails { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的XAML中,你也可以在代码中编写它,绑定到Command Parameter你的Item模板:
<Button Text="Delete" CommandParameter="{Binding ItemName}" Clicked="DeleteClicked"></Button>
Run Code Online (Sandbox Code Playgroud)
完整项目模板如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
在你的代码文件中,你可以这样做:
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);
}
Run Code Online (Sandbox Code Playgroud)
重要说明:这只会从绑定集合中删除该项目.要从原始列表中删除它,您需要使用它ObservableCollection
以下是解释方案的完整源代码 - 使用XAMARIN.FORMS处理Listview中的子控件事件.
另外,教程 - 如何使用Xamarin.Forms处理行中的行选择和删除按钮以解释自定义ListView中的按钮listview.
| 归档时间: |
|
| 查看次数: |
19137 次 |
| 最近记录: |