让UI能够自动刷新Viewmodel里数据的改动

本文介绍了在使用Viewmodel和Databinding时如何处理数据改动自动刷新UI的问题。通过在Viewmodel中实现Observable接口,并覆盖相关函数,可以确保当Viewmodel数据变化时,用户界面能够及时更新。在配置新版本Gradle编译时,可能会遇到由于androidx与老版本兼容性导致的问题,解决方法是在gradle.properties中检查相关设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Viewmodel 和Databinding 时很好用的工具,尤其是在Fragments之间共享数据。

<TreeView x:Name="tvList" Padding="10" FontSize="18" /> 以上是前端代码, private List<DeviceLibModel> deviceList = null; //根节点 private TreeViewItem rootItem; public MainWindow() { InitializeComponent(); RefreshTreeView(); } //以递归来实现tree view数据的加载 private void CreateChildItem(TreeViewItem parentItem, int preId) { //找到所有以该节点为父节点的子项 找出一级节点数据项 var items = from list in this.deviceList where list.ParentId.Equals(preId) select list; //循环创建该节点的所有子节点 foreach (var item in items) { //创建新的节点并设置属性 TreeViewItem item11 = new TreeViewItem(); item11.Header = item.DeviceName; //创建一级节点,添加到treeview中 parentItem.Items.Add(item11);//父节点加入子节点 //设置加载的字体大小 item11.FontSize = 14; //调用递归实现子节点添加 在方法内部调用自己 CreateChildItem(item11, item.DeviceId); } } /// <summary> /// 刷新TreeView /// </summary> private void RefreshTreeView() { //加载treeview deviceList = new List<DeviceLibModel>(); deviceList.Add(new DeviceLibModel { DeviceId = 1, DeviceName = "动物", ParentId = 0 }); deviceList.Add(new DeviceLibModel { DeviceId = 2, DeviceName = "长颈鹿", ParentId = 1 }); deviceList.Add(new DeviceLibModel { DeviceId = 3, DeviceName = "大象", ParentId = 1 }); deviceList.Add(new DeviceLibModel { DeviceId = 4, DeviceName = "老虎", ParentId = 1 }); deviceList.Add(new DeviceLibModel { DeviceId = 5, DeviceName = "兔子", ParentId = 1 }); deviceList.Add(new DeviceLibModel { DeviceId = 6, DeviceName = "斑马", ParentId = 1 }); deviceList.Add(new DeviceLibModel { DeviceId = 7, DeviceName = "水果", ParentId = 0 }); deviceList.Add(new DeviceLibModel { DeviceId = 8, DeviceName = "凤梨", ParentId = 7 }); deviceList.Add(new DeviceLibModel { DeviceId = 9, DeviceName = "西瓜", ParentId = 7 }); deviceList.Add(new DeviceLibModel { DeviceId = 10, DeviceName = "桃子", ParentId = 7 }); deviceList.Add(new DeviceLibModel { DeviceId = 11, DeviceName = "苹果", ParentId = 7 }); //创建一个根节点 this.tvList.Items.Clear(); rootItem = new TreeViewItem(); rootItem.Header = "器件总库"; this.tvList.Items.Add(rootItem); //基于递归方式添加所有子节点 CreateChildItem(rootItem, 0); } 以上是后台代码,该C#代码主要是生成树状图,如何将改代码改写为MVVM模式?
07-15
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值