Chinaunix首页 | 论坛 | 博客
  • 博客访问: 412979
  • 博文数量: 44
  • 博客积分: 4980
  • 博客等级: 上校
  • 技术积分: 1035
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-09 20:39
个人简介

偶尔编程的胖子 40岁之后还能坚持学习

文章分类

全部博文(44)

文章存档

2023年(12)

2022年(2)

2011年(1)

2010年(6)

2009年(1)

2008年(22)

我的朋友

分类: Android平台

2023-10-26 20:22:27

CollectionView 绑定一个
CollectionView ItemsSource="{Binding BreakerList}" Grid.Row="6" Margin="20" VerticalOptions="Center"
其中public ObservableCollection BreakerList { get; set; }

实际操作中,会发现BreakList增加或者删除元素时,界面会刷新,但是更改某一个属性时界面不变化。
我的需求是,当后台线程查询到一个设备的在线状态时,会发消息给这个页面的viewModel,viewModel会更新BreakList里面的元素的属性,但不能刷新;
没办法,刚开始使用增加再删除的方法
int iTemp = BreakerList.IndexOf(item);
BreakerList.RemoveAt(iTemp);

改完了之后BreakerList.Insert(iTemp, model);
可以实现,但是界面会抖动,就会看到一个个的图标消失,然后再出现,体验好差。


今天终于找到原因了,原来是因为类是引用变量,observable的观察的是引用有没有变化,其下属的类中的属性不会观察到。
解决的办法就是将下属的类也设计成observable属性的,
采用如下方法即可:public class FunctionItemModel : INotifyPropertyChanged
继承一个INotifyPropertyChanged类即可,如果有更深层的我估计也一样,都是要这么玩才可以。
不会放视频,就放个图片感受下

阅读(479) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~