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) |