2017-09-25 85 views
0

我有一個列表視圖,其中我從視圖模型綁定其項目源,而在視圖模型列表中調試列表顯示的值,但在模擬器沒有值出現。ListView項目未顯示

<ListView x:Name="RegisteredUserList" ItemsSource="{Binding RegisteredUsers}" ItemSelected="RegisteredUserList_SelectedItemClicked" BackgroundColor="Aqua"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <ViewCell> 
         <StackLayout Orientation="Vertical"> 
          <Label Text="{Binding }" TextColor="Black" FontSize="13" HorizontalOptions="Center" VerticalOptions="Center"/> 
         </StackLayout> 
        </ViewCell> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

我的視圖模型的代碼是:

private async void GetAllUsersFromServer() 
    { 
     var registeredPeople =await UserService.Instance.GetAllUsers(); 
     foreach (var names in registeredPeople) 
     { 
      RegisteredUsers.Add(names.UserName); 
     } 
    } 

public List<string> RegisteredUsers { get { return _regesteredUsers; } set { _regesteredUsers = value; OnPropertyChanged(); } } private List<string> _regesteredUsers= new List<string>();

RegisteredUsers它顯示的名稱列表,但用戶界面是給values.How來解決這個問題?

回答

0

只有更換以下視圖模型代碼保持它的休息

private async void GetAllUsersFromServer() 
    { 
     List<string> tmpRegisteredUsers = new List<string>(); 
     var registeredPeople =await UserService.Instance.GetAllUsers(); 
     foreach (var names in registeredPeople) 
     { 
      tmpRegisteredUsers.Add(names.UserName); 
     } 
     RegisteredUsers = tmpRegisteredUsers; 
    } 
1

你RegisteredUsers酒店有權宣佈,爲了在任何改變(添加,刪除,移動)通知UI實例化這樣的:

ObservableCollection<string> RegisteredUser = new ObservableCollection(); 

有關此類型的詳細信息,請參閱https://developer.xamarin.com/api/type/System.Collections.ObjectModel.ObservableCollection%601/

+0

感謝重播@魯迪,但它不爲我工作,我也嘗試'公開名單 RegisteredUsers { 得到{_regesteredUsers; } set { _regesteredUsers = value; OnPropertyChanged(); } }'但沒有變化,只出現空列表。 – sahithi

0

如果你想添加項目,你必須使用ObservableCollection。 使用調用OnPropertyChanged的列表。只有初始化UI時(以及它爲空時)纔會通知UI。 ObservableCollection將通知用戶界面每個變化。

另外,您如何設置視圖的BindingContext? 它應該在xaml或Code Behind中使用viewName.BindingContext = viewModelInstance完成;