编程语言
首页 > 编程语言> > c#-当ObservableCollection中的模型属性更改时更新UI?

c#-当ObservableCollection中的模型属性更改时更新UI?

作者:互联网

我有一个视图,其中包含一组从Web服务获取的图像
我在这个班级的清单中收到它们:

 public class ImageModel 
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string imageUrl { get; set; }
    }

在每个图像下,我都显示一个上投票按钮,因此我在上面的模型中添加了另一个bool属性:

 public bool UpVoted { get; set; }

将显示这些图像的ListView绑定到ObservableCollection< ImageModel> ,我想通过一个转换器将投票图标更改,该转换器将UpVoted的值转换为相应的图标,当用户单击投票图标时:执行此方法的命令:

    private void OnVoting(ImageModel image)
    {
        Images.Single(x => x.id == image.id).UpVoted = !image.UpVoted;
    }

问题是用户界面没有更新,并且为了确保我理解问题,我将模型转换为View模型并对UpVoted属性进行了必要的更改(我正在使用MVVM光源库)

bool upVoted;
        public bool UpVoted
        {
            get { return upVoted; }
            set
            {
                Set(ref upVoted, value);
            }
        }

现在就可以了
因此我需要将UpVoted绑定到用户界面,以便每当更改时都会对其进行更新

解决方法:

第一
您的模型类必须继承自MvxNotifyPropertyChanged

public class ImageModel : MvxNotifyPropertyChanged
    {
        public int Id { get; set; }
        public string Name { get; set; }
        private bool upVoted ;
        public bool UpVoted 
        {
            get { return upVoted ; }
            set { upVoted = value; RaisePropertyChanged(() => UpVoted ); }
        }
    }

然后使用MvxValueConverter,您就可以开始了

标签:xamarin,xamarin-forms,mvvm-light,c,mvvm
来源: https://codeday.me/bug/20191110/2014516.html