#c# #xamarin #mvvm
#c# #xamarin #mvvm
Вопрос:
Привет, кто-нибудь знает, что я здесь сделал не так? Я хотел отобразить свойство FixedId в своем пользовательском интерфейсе, но получил сообщение об ошибке, в котором говорится, что свойство не найдено в ViewModel.Я получаю данные из веб-API и уже получил данные из API. Все, что я хочу сделать, это отобразить идентификатор в пользовательском интерфейсе. Я работаю над формами Xamarin. вот мой код. Спасибо за помощь, ребята.
Мой XAML и ViewModel
lt;ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:viewmodel="clr-namespace:App3.ViewModel" x:DataType="viewmodel:MainPageViewModel" x:Class="App3.MainPage"gt; lt;StackLayoutgt; lt;ListView ItemsSource="{Binding Employees}" HasUnevenRows="True" IsPullToRefreshEnabled="True" IsRefreshing="{Binding IsRefreshing}" RefreshCommand="{Binding RefreshData}"gt; lt;ListView.ItemTemplategt; lt;DataTemplategt; lt;ViewCellgt; lt;StackLayout Padding="4"gt; lt;Label Text="{Binding FixedAssetId}" TextColor="Black" FontSize="Medium"/gt; lt;/StackLayoutgt; lt;/ViewCellgt; lt;/DataTemplategt; lt;/ListView.ItemTemplategt; lt;/ListViewgt; lt;/StackLayoutgt;
Моя модель просмотра
public async Tasklt;Employeegt; GetEmployees() { var token = await GetAccessToken(); Listlt;Employeegt; EmployeeList = null; JObject JSonObject = null; using (var client = new HttpClient()) { try { var uri = "https://my-project.azurewebsites.net"; client.BaseAddress = new Uri(uri); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); var result = await client.GetAsync("/fa/ID000001234"); IsRefreshing = false; if (!result.IsSuccessStatusCode) throw new Exception("Error GetEmployees method" result.Content.ReadAsStringAsync().Result); EmployeeList = JsonConvert.DeserializeObjectlt;Listlt;Employeegt;gt;(result.Content.ReadAsStringAsync().Result); } catch (Exception ex) { throw new Exception("Error GetEmployees method"); } Employees = new ObservableCollectionlt;Employeegt;(EmployeeList); } return EmployeeList[0]; } ObservableCollectionlt;Employeegt; _employees; public ObservableCollectionlt;Employeegt; Employees { get { return _employees; } set { _employees = value; OnPropertyChanged(); } } bool _isRefreshing; public bool IsRefreshing { get { return _isRefreshing; } set { _isRefreshing = value; OnPropertyChanged(); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public Command RefreshData { get { return new Command(() =gt; { GetEmployees(); }); } } }
Комментарии:
1. Я ищу свойство с именем FixedAssetId в вашей модели представления, но не могу его найти. Поэтому вам следует создать соответствующее свойство.
2. Покажи нам, как
Employee
это выглядит. Есть лиFixedAssetId
на нем «а»?3. Да, вы оба правы, я пропустил некоторые свойства в модели сотрудника, большое вам спасибо за вашу помощь 🙂