istView的项移除

如标题所言,是做删除ListView绑定项的功能的;鉴于这个功能当时确实花费了很多时间,并且网上也找不到删除所需的案例,所以,我就做了一份案例,仅供各位前辈和同行进行参考,如有不当之处,还望指点,我将再接再励,下面进入正题:

  按照需求我们是需要实现的功能:点击删除的时候,把整个Items给移除,最初用listview.Items.RemoveAt(Listview.SelectedIndex)这样的方式来删除,调试的时候报“灾难性......”的错误,无奈我只能尝试listview.Items.Remove(Listview.SelectedItems)以及listview.Items.Remove(Listview.SelectedItem[0])等等方式,都不行,不是报灾难性的错误,就是没效果;当时头真的好疼,上网找资料,没有想要的,只能去向群里问大神,大神的想法及编码水平确实让我望尘莫及;但是,即便大神写的代码,也不能实现我想要的功能,只好继续想办法,借鉴c#的其它办法,如果是开发uwp的就知道,写uwp的C#和微软之前的C#有些许的不同,所以我只能继续尝试,后来终于想到,我直接操作绑定的通知列表不就可以了吗,操作完毕再重新绑定一次就好了啊,

  于是,功能就实现了,下面展示详细代码:

 1 <ListView x:Name="listView" Grid.Row="2"
 2                   HorizontalAlignment="Center"
 3                   Margin="0" VerticalAlignment="Center">
 4             <ListView.Resources>
 5                 <Style TargetType="ListViewItem">
 6                     <Setter Property="Padding" Value="0"></Setter>
 7                     <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
 8                     <Setter Property="Template">
 9                         <Setter.Value>
10                             <ControlTemplate TargetType="ListViewItem">
11                                 <Grid Background="{TemplateBinding Background}">
12                                     <ContentPresenter
13                                               Content="{TemplateBinding Content}"
14                                               Margin="{TemplateBinding Padding}" />
15                                 </Grid>
16                             </ControlTemplate>
17                         </Setter.Value>
18                     </Setter>
19                 </Style>
20             </ListView.Resources>
21             <ListView.ItemTemplate>
22                 <DataTemplate>
23                     <RelativePanel MinWidth="330"
24                                    MinHeight="50"
25                                    CornerRadius="3"
26                                    Margin="5"
27                                    BorderBrush="Green"
28                                    BorderThickness="1">
29                         <TextBlock  Name="tbName" RelativePanel.AlignLeftWithPanel="True"
30                                    Text="{Binding name}"></TextBlock>
31                         <TextBlock RelativePanel.Below="tbName" Margin="0,5,0,0"
32                                    Text="{Binding sex}"></TextBlock>
33                         <TextBlock  Name="tbDelItem" VerticalAlignment="Center" RelativePanel.AlignRightWithPanel="True"
34                                         FontSize="18" Text="" FontFamily="{StaticResource SymbolThemeFontFamily}"
35                                        Foreground="Red" Tapped="tbDelItem_Tapped"
36                                     RelativePanel.AlignVerticalCenterWithPanel="True"></TextBlock>
37                     </RelativePanel>
38                 </DataTemplate>
39             </ListView.ItemTemplate>
40         </ListView>

后台的也加上来:

 1 public sealed partial class MainPage : Page
 2     {
 3         ObservableCollection<Info> oc { get; set; } = new ObservableCollection<Info>();
 4         public MainPage()
 5         {
 6             this.InitializeComponent();
 7         }
 8
 9         protected override void OnNavigatedTo(NavigationEventArgs e)
10         {
11
12
13             this.DataContext = this;
14             for (int i = 0; i < 10; i++)
15             {
16                 oc.Add(new Info() { name="张三"+i, sex="男"+i});
17             }
18             listView.ItemsSource = oc;
19         }
20
21         private void tbDelItem_Tapped(object sender, TappedRoutedEventArgs e)
22         {
23             //当我click目标对象的时候,就已经选中了对象所在的整个绑定对象,
24             //然后,移除通知列表ObservableCollection<Info>里面对应的对象
25             Info fn = listView.SelectedItem as Info;
26             oc.Remove(fn);
27             listView.ItemsSource = oc;
28         }
29     }
30
31     public class Info
32     {
33         public string name { get; set; }
34         public string sex { get; set; }
35         public string hobby { get; set; }
36
37     }

代码都已附上,就这样结束吧,如若有问题可以联系,qq:1358338055

时间: 2024-10-07 18:22:25

istView的项移除的相关文章

Java12新特性 -- 其他新增,移除,废弃项

支持unicode 11 JDK 12版本包括对Unicode 11.0.0的支持.在发布支持Unicode 10.0.0的JDK 11之后,Unicode 11.0.0引 入了以下JDK 12中包含的新功能: 684 new characters 11 new blocks 7 new scripts. 其中: 684个新字符,包含以下重要内容: 66个表情符号字符(66 emoji characters) Copyleft符号(Copyleft symbol) 评级系统的半星(Half st

cocos2d-x改底层之动态改变UIListView中的某项在链表中的位置

先看一下UIListView添加.插入.删除的机制,再来考虑如何移动某一项在链表中得位置. UIListView.h /* 所有项用一个数组来保存 */ CCArray* _items; void ListView::pushBackCustomItem(Widget* item) { /* 向数组中添加一项 */ _items->addObject(item); remedyLayoutParameter(item); addChild(item); _refreshViewDirty = t

安卓Listview 不规则项即不同item的运行

在安卓中,listview  的item 是一个不断被轮询调换位置的过程,这样 即 图片参考地址   http://www.cnblogs.com/mybkn/archive/2012/05/23/2514681.html   谢谢. 开发中 ,我们经藏会遇到listview  的每一项都不同的需求.   这个时候如果使用 以前自定义的BaseAdapter的方法的话 .在滚动的时候就会出现item布局错乱的情况,也就是说 第一项在最初的背景是红色的xml布局, 当滚动到第二项置顶,在回到顶部的

java 11 移除的一些其他内容,更简化的编译运行程序,Unicode 10,移除了不太使用的JavaEE模块和CORBA技术,废除Nashorn javascript引擎,不建议使用Pack200 相关api

移除的一些其他内容 移除项 移除了com.sun.awt.AWTUtilities 移除了sun.misc.Unsafe.defineClass, 使用java.lang.invoke.MethodHandles.Lookup.defineClass来替代 移除了Thread.destroy()以及 Thread.stop(Throwable)方法 移除了sun.nio.ch.disableSystemWideOverlappingFileLockCheck.sun.locale.formata

Sublime Text 常用的16 个 Sublime Text 快捷键

在我做了一次包含一些现场编码的演示后,一些观众问我是如何操作这么快.当然这里没有唯一的答案,答案是一堆简单的快捷键和大量的实践的组合.为了回应那些询问,我觉得有必要看看我每天想都不用想且使用的快捷键. 这里有一个15 16 个快捷键的精选列表(1个自定义快捷键),以gif动画展示,我每天使用.享受吧! (译者注:原文所列快捷键均为OS X环境,为了方便Windows和Linux环境童鞋的学习,译者将备注Windows和Linux下对应的快捷键) 选择 选择一个选中项的下一个匹配项 选择一个选中项

《iOS用户体验》总结与思考-改动版

假设转载此文.请注明出处:http://blog.csdn.net/paulery2012/article/details/25157347,谢谢. 前言: 本文是在阅读<ios用户体验>的过程中,记录的总结和个人的感受思考.不免有错误之处,恳请读者指正,在以下留言就可以. 第一章:ios人机界面指南概述 1.智能手机的特点:大尺寸.高分辨率.强大的计算能力 2.签名交互:滚动轮.导航键.按键和硬键盘.软键盘.触控笔.触屏.输入特性又被称为"签名交互",用户能够通过输入方式

OS快捷键

OS X 键盘快捷键 若要使用键盘快捷键或按键组合,您可以同时按修饰键和字符键.例如,同时按下 Command 键(标有 符号的按键)和“c”键会将当前选中的任何内容(文字.图形等)拷贝至夹纸板.这也称作“Command-C 按键组合”(或键盘快捷键). 许 多按键组合中都包含修饰键.修饰键将改变 OS X 对其他键击或鼠标/触控板点按动作的解释方式.修饰键包括:Command.Shift.Option.Control.Caps Lock 和 Fn 键.如果您的键盘有 Fn 键,可能需要在以下列

十种JAVA排序算法实例

一.冒泡(Bubble)排序 复制代码 代码如下: void BubbleSortArray() {       for(int i=1;i<n;i++)       {         for(int j=0;i<n-i;j++) {               if(a[j]>a[j+1])//比较交换相邻元素                {                    int temp;                    temp=a[j]; a[j]=a[j+1]

进击的雨燕--------------集合类型

Swift 语言提供Arrays.Sets和Dictionaries三种基本的集合类型用来存储集合数据.数组(Arrays)是有序数据的集.集合(Sets)是无序无重复数据的集.字典(Dictionaries)是无序的键值对的集. Swift 语言中的Arrays.Sets和Dictionaries中存储的数据值类型必须明确.这意味着我们不能把不正确的数据类型插入其中.同时这也说明我们完全可以对取回值的类型非常自信. 注意:Swift 的Arrays.Sets和Dictionaries类型被实现