WPF 控件【L】ListView(二) 将ListView集合中每行每列取出,赋值给另外一个集合

方法一(https://zhidao.baidu.com/question/201240996.html百度上的,理论可行,实际不行):

string s=null;
for (int i = 0; i < listView1.Items.Count; i++)
{
    ListViewItem item = listView1.Items[i];
    for (int j = 0; j < item.SubItems.Count; j++)
    {
        s =s+item.SubItems[j].Text;
        textBox1.Text = s;
    }
}

这种方法理论上可行,但是由于listView1.Items[i]是一个对象object,故往往需要这样:

ListViewItem item = listView1.Items[i] as ListViewItem;

但是我把object转为ListViewItem的过程中,就不成功,还不知道问题出现在哪。如下 :

不成功的原因,我觉得应该是在object转listView这步骤。

程序执行到第180行时,Items由object类型变成PatientInfoProperty类型,而PatientInfoProperty类型是不能赋值给listView。

程序执行到第180行时,Items由object类型变成PatientInfoProperty类型,而PatientInfoProperty类型是不能赋值给listView。

程序执行到第180行时,Items由object类型变成PatientInfoProperty类型,而PatientInfoProperty类型是不能赋值给listView。

你可以参考论坛 https://bbs.csdn.net/topics/390955753,这论坛提到了从 listView1.Items拷贝到 listView2.Items的方法。

方法二,根据listView.item的具体属性而拷贝。

方法二、建立具体属性的集合

我注意到了m_cGlobal.m_cMWindow.m_cHome.lvPatientList.Items是一个多行多列的集合,即 List<PatientInfoProperty> 。于是

我建立了这样的集合,把lvPatientList.Items拷贝出来:

 List<PatientInfoProperty> item = new List<PatientInfoProperty>();
 item = m_cGlobal.m_cMWindow.m_cHome.lvPatientList.ItemsSource as List<PatientInfoProperty>;//找出集合的每一行

所以,我只需操作item即可。然后就可以找出集合的每行的属性了

最后注意lvPatientList.ItemsSource之前使用ObservableCollection<PatientInfoProperty>赋值的,所以你必须建立一个ObservableCollection<PatientInfoProperty> 集合,即:

ObservableCollection<PatientInfoProperty> item = new ObservableCollection<PatientInfoProperty>();

好了,没问题了。可以用了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值