title: Xamarin Forms Bind Array element inside listView
body: <p>need to ask you a hand with this one.
  I'm currently developing a Xamarin Forms solution using MVVM and i'm in a new situation right now.</p>
  
  <p>I've got a listView with items made by this class</p>
  
  <pre><code> public class City
  {
      public int Key { get; set; }
      public string Value { get; set; }
      public List&lt;string&gt; Words{ get; } = new List&lt;string&gt; { "One", "Two", "Three" };
  }
  </code></pre>
  
  <p>What I want to achieve is to display a label text created using the <code>Words</code> list elements indicized by <code>Key</code>. Something like </p>
  
  <pre><code>Words[Key]
  </code></pre>
  
  <p>Example</p>
  
  <pre><code> &lt;ListView
          ItemsSource="{Binding Cities}"&gt;
          &lt;ListView.ItemTemplate&gt;
              &lt;DataTemplate&gt;
              &lt;ViewCell&gt;
                  &lt;StackLayout
                      HorizontalOptions="FillAndExpand"
                      VerticalOptions="StartAndExpand"&gt;
  
                      &lt;Label Text="{Binding Words[Key]}"
                          FontSize="18"
                          TextColor="Black"
                          VerticalOptions="StartAndExpand" /&gt;        
                  &lt;/StackLayout&gt;
  
                  &lt;/ViewCell&gt;
              &lt;/DataTemplate&gt;
          &lt;/ListView.ItemTemplate&gt;
      &lt;/ListView&gt;
  </code></pre>
  
  <p>The label text binding doesn't work, but tecnically is what i need to achieve. For example, if i use <code>Words[0]</code> it will work and returns 'One'</p>
  
  <p>My ViewModel is pretty simple.</p>
  
  <pre><code> public class TestViewModel : INotifyPropertyChanged
  {
      public ObservableCollection&lt;City&gt; 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&lt;City&gt; GetCities()
      {
          return new ObservableCollection&lt;City&gt;
          {
              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"}
          };
      }
  }
  </code></pre>
  
  <p>Do i need to create a property for indexing? In my opinion the problem is that i'm inside a list and already have an index to use. </p>
  
  <p>Thanks for help guys</p>