2016-09-26 78 views
0

下面是一些示例,我編寫了我的第一個MVVM的演示。綁定和渲染基本的後,我試圖將一個列表綁定到一個列表視圖,我做錯了什麼,但我無法得到它。MVVM示例不工作

如果有人能給我任何線索,我將不勝感激。

的想法是這是一個:

- 視圖模型 -

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個元素),但標籤內沒有任何東西。

謝謝配偶。

+1

「屬性」實際上是「Intervenciones」類型的公共屬性嗎? –

+0

請提供班級Intervenciones。 – Dominik

+0

嗨@StefanWanitzek。是的。 –

回答

2

類Intervenciones需要一個字符串屬性 「屬性」 像

public string attribute { get; set; } 

您的信息:

它必須是一個屬性!不是一個領域。而實際上約定是:

public string Attribute { get; set; } 

因爲它是一個公共財產。

+0

感謝Dominik。在斯蒂芬和你之間,我明白了。我可以實現一個真正的。乾杯伴侶。 –

0

除此之外,你不應該在你的視圖後面的代碼中實例化你的ViewModel。

嘗試將您的ViewModel設置爲View的DataContext而不是BindingContext。而且你似乎沒有在模型中實現屬性「屬性」。