如何在ObservableCollection中的项目属性上实现INotifyPropertyChanged?

时间:2018-10-21 14:59:01

标签: c# xamarin xamarin.forms observablecollection inotifypropertychanged

使用xamarin平台。我基本上需要将observablecollection中某个项目的属性绑定到label.text属性。

到目前为止,我有这个

模型

public class TelemetModel : BaseItem , INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private int dayCount;

    public int Daycount
    {
        get { return dayCount; }
        set
        {
            if (dayCount != value)
            {
                dayCount = value;

                OnPropertyChanged();
            }
        }
    }


    public double Tdyattnd { get; set; }
    public double Tdybnk { get; set; }

    public double Tomattnd { get; set; }
    public double Tombnk { get; set; }


    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = "")
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

    }

ViewModel

public ObservableCollection<TelemetModel> OtelemetInstance { get; set; }
OtelemetInstance = new ObservableCollection<TelemetModel>();

//In some method
var otelemet = new TelemetModel
            {
                Daycount = classcount,
                Tdyattnd = Math.Round(tdyatnd, 2),
                Tdybnk = Math.Round(tdybnk, 2),
                Tomattnd = Math.Round(tomatnd, 2),
                Tombnk = Math.Round(tombnk, 2)
            };
OtelemetInstance.Clear();

OtelemetInstance.Add(otelemet);

查看

lbl_classinfo.BindingContext=ViewModel.ClassVMInstance.DatesVMInstance.OtelemetInstance[0].Daycount;
lbl_classinfo.SetBinding(Label.TextProperty, ".",converter:new IClassNeededConverter());

现在,即使我在模型属性中使用了inotifypropertychanged接口,我的视图也没有更新。

花3天的一半时间寻找我的特定需求,即。在ObservableCollection的item属性上实现INotifyPropertyChanged,在任何地方都找不到代码片段。我对MVVM陌生,我所做的可能是错误的,在此先感谢您的帮助。让我知道您是否需要任何详细信息。

编辑:

IV制作了GitHub存储库Here

0 个答案:

没有答案