通过几个例子,我编写了我的第一个MVVM演示。绑定并渲染基本的后,我试图将对象列表绑定到列表视图,我做错了但我无法得到它。
如果有人能给我任何线索,我将不胜感激。
这个想法就是这个:
- 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(); }
}
}
- 模型 -
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();
}
}
- XAML -
<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个元素),但标签内部没有任何内容。
感谢队友。
答案 0 :(得分:2)
Class Intervenciones需要一个字符串属性“属性”,如
public string attribute { get; set; }
有关您的信息:
它必须是一个财产!不是一个领域。实际上,惯例是:
public string Attribute { get; set; }
因为它是公共财产。
答案 1 :(得分:0)
除此之外,您不应在View中的代码中实例化ViewModel。
尝试将ViewModel设置为View的DataContext,而不是BindingContext。而且您似乎没有实现Property&#34;属性&#34;在你的模型中。