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个元素),但是标签里面没有任何东西。
谢谢伴侣。
classinterciones需要一个像这样的字符串属性"attribute"
public string attribute { get; set; }
For your info:
必须是一个属性!不是场。实际上约定是:
public string Attribute { get; set; }
除此之外,你不应该在View后面的代码中实例化你的ViewModel。
尝试将ViewModel设置为视图的DataContext,而不是BindingContext。而且,您似乎没有在您的模型中实现属性"属性"。