2017-09-25 94 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完成;