нужно попросить вас руку с этим.В настоящее время я разрабатываю решение Xamarin Forms с использованием MVVM, и сейчас я нахожусь в новой ситуации.
У меня есть listView с элементами этого класса
public class City
{
public int Key { get; set; }
public string Value { get; set; }
public List<string> Words{ get; } = new List<string> { "One", "Two", "Three" };
}
ЧтоЯ хочу добиться, чтобы отображался текст метки, созданный с использованием элементов списка Words
, обозначенных Key
.Что-то вроде
Words[Key]
Пример
<ListView
ItemsSource="{Binding Cities}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout
HorizontalOptions="FillAndExpand"
VerticalOptions="StartAndExpand">
<Label Text="{Binding Words[Key]}"
FontSize="18"
TextColor="Black"
VerticalOptions="StartAndExpand" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Привязка текста метки не работает, но с технической точки зрения это то, что мне нужно для достижения.Например, если я использую Words[0]
, он будет работать и возвращает 'One'
Мой ViewModel довольно прост.
public class TestViewModel : INotifyPropertyChanged
{
public ObservableCollection<City> Cities { get; set; }
public TestViewModel()
{
Cities = GetCities();
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
public ObservableCollection<City> GetCities()
{
return new ObservableCollection<City>
{
new City {Key = 1, Value = "Mumbai"},
new City {Key = 2, Value = "New York"},
new City {Key = 3, Value = "Milan"},
new City {Key = 4, Value = "Rome"}
};
}
}
Нужно ли создавать свойство для индексации?На мой взгляд, проблема в том, что я нахожусь в списке и уже имею индекс для использования.
Спасибо за помощь, ребята