MVVM示例不工作

本文关键字:工作 MVVM | 更新日期: 2023-09-27 18:09:02

以下几个例子,我编写了我的第一个MVVM的演示。在绑定和渲染基本的我试图绑定对象列表到listview,我做了一些错误的事情,但我不能得到它。

如果有人能给我任何提示,我将感激不尽。

这个想法是这样的:

——VIEWMODEL——

    public class IntervectionViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public void RaiseOnPropertyChange([CallerMemberName] string propertyName = null)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
        public IntervectionViewModel()
        {
            intervencion = new IntervectionModel();
            Intervencion1 = intervencion.Intervencion;
        }
        private List<Intervenciones> _intervencion1;
        public List<Intervenciones> Intervencion1
        {
            get { return _intervencion1; }
            set { _intervencion1 = value;  RaiseOnPropertyChange(); }
        }
   }

——MODEL——

    public class IntervectionModel
    {
        public List<Intervenciones> Intervencion;
        public IntervectionModel()
        {
           for (int i = 0; i < 4; i++)
            {
//Class Intervenciones contains attribute
                Intervenciones inter = new Intervenciones(i);
                this.Intervencion.Add(inter);
            }
        }
     }
    public class Intervenciones
    {
        public string Nombre;
        public Intervenciones(int num)
        {
            this.Jefe = "JEFE" + num + " = JEFE1";
            this.Nombre = "NOMBRE" + num + " = NOMBRE1";
            this.Timer = "1:23:23";
            this.Estado = Enums.Estado.Bloqueado;
            this.Interv = new List<Tarea>();
            for (int i = 0; i < 8; i++)
            {
                Tarea t = new Tarea
                {
                    Titulo = this.Nombre + "%" + "TITULO = " + i,
                    Inicio = DateTime.Now.AddMinutes(i),
                    Duracion = i * 60,
                    Encargado = "ENCARGADO = " + i,
                    Estado = Enums.Estado.Activo,
                    Miembros = new List<string> { "Miembro" + num + " = " + i, "Miembro1" + num + " = " + i, "Miembro2" + num + " = " + i },
                    TiempoEjecucion = i + 15
                };
                Interv.Add(t);
            }
        }
    }
}

—XAML.CS—

public partial class Page1 : ContentPage
{
    public Page1()
    {
        var p = new IntervectionViewModel();
        BindingContext = p;
        InitializeComponent();
    }
}

——

  <ListView x:Name="sa" ItemsSource="{ Binding Intervencion1 }" VerticalOptions="Center" HorizontalOptions="Center">
    <ListView.ItemTemplate>
      <DataTemplate>
        <ViewCell>
            <Label Text="{ Binding attribute }" TextColor="Black" BackgroundColor="Blue"/>
          </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>

XAML正在绘制4个蓝色行(绑定的列表有4个元素),但是标签里面没有任何东西。

谢谢伴侣。

MVVM示例不工作

classinterciones需要一个像这样的字符串属性"attribute"

public string attribute { get; set; }

For your info:

必须是一个属性!不是场。实际上约定是:

public string Attribute { get; set; }

除此之外,你不应该在View后面的代码中实例化你的ViewModel。

尝试将ViewModel设置为视图的DataContext,而不是BindingContext。而且,您似乎没有在您的模型中实现属性"属性"。