MVVM示例无法正常工作

时间:2016-09-26 11:36:07

标签: c# mvvm xamarin xamarin.forms mvvmcross

通过几个例子,我编写了我的第一个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个元素),但标签内部没有任何内容。

感谢队友。

2 个答案:

答案 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;在你的模型中。