2016-08-10 2 views
0

viewXamarin Forms: Привязка данных вопрос с MVVM в ListView

viewmodel, model and code behind

Здравствуйте сообщества,

нужна помощь с привязки данных распознавания паттерна MVVM в ListView в XAML. Я не знаю, почему это не работает. Я не вижу никаких данных в представлении. У меня есть только это исключение через отладку.

Xamarin.Forms.Xaml.XamlParseException: Позиция 8:10. Содержимое свойства null или не является IEnumerable

Спасибо за ответы.

XAML

<ViewCell> 
     <StackLayout HorizontalOptions="FillAndExpand" Orientation="Horizontal"> 
     <StackLayout HorizontalOptions="Start" Orientation="Vertical"> 
       <Label Text="{Binding Name}" /> 
      </StackLayout> 
      <StackLayout HorizontalOptions="End" Orientation="Vertical"> 
       <Label Text="{Binding Information}" /> 
      </StackLayout> 
    </StackLayout> 
</ViewCell> 

Код

public partial class PartyStatusPage : ContentPage 
{ 
    public PartyStatusPage() 
    { 
     InitializeComponent();    
    } 

    protected override void OnAppearing() 
    { 
     base.OnAppearing(); 

     BindingContext = new PartyStatusPageViewModel(); 
    } 
} 

public class PartyStatusPageViewModel 
{ 
    public List<PartyStatus> ItemList; 

    public PartyStatusPageViewModel() 
    { 
     ItemList = new List<PartyStatus>(); 
     ItemList.Add(new PartyStatus { Name = "Max", Information = "test" }); 
    } 
} 

public class PartyStatus 
{ 
    public string Name { get; set; } 

    public string Information { get; set; } 

    public bool State { get; set; } 
} 
+5

Пожалуйста, не используйте экраны для отображения кода. Отправьте свой код здесь в Code-Tag. Кроме того, создайте свой источник как свойство вместо поля – lokusking

+0

О, извините, я новый пользователь. Спасибо за совет. –

ответ

0

Ваш DataTemplate в вашем XAML неправильно. Необходимо указать вид вашего ViewCell явно. Посмотрите на следующий XAML:

<ListView.ItemTemplate> 
    <DataTemplate> 
     <ViewCell> 
      <ViewCell.View> 
       <!-- Your template (StackLayout for example --> 
      </ViewCell.View> 
     </ViewCell> 
    </DataTemplate> 
</ListView.ItemTemplate> 
+0

Однако эта часть работает :-) –

0

Например XAML:

<ListView x:Name="listView" ItemsSource="{Binding Readycontacts}" SelectedItem="{Binding SelectedItem}" Margin="10,10,94.234,10"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Width="130" Header="Name" 
        DisplayMemberBinding="{Binding Path=Name}" /> 
       <GridViewColumn Width="180" Header="Adresse" 
        DisplayMemberBinding="{Binding Path=Addresse}" /> 
       <GridViewColumn Width="130" Header="Telefonnummer" 
        DisplayMemberBinding="{Binding Path=Telefonnummer}" /> 
       <GridViewColumn Width="130" Header="Mobil" 
        DisplayMemberBinding="{Binding Path=Mobil}" /> 
      </GridView> 
     </ListView.View> 
    </ListView> 

ViewModel (вам необходимо обновить ваш вар-х после изменения значения)

[EDIT] или ваш Просмотр не будет распознавать/отображать что-либо [EDIT]

private string _name = ""; 
    public string Name 
    { 
     get 
     { 
      return _name; 
     } 
     set 
     _name = value; 
      RaisePropertyChanged("Name"); 
     } 
    } 
RaisePropertyChanged("Name"); 

Обновите свою привязку.

Смежные вопросы