TextBox i bindowanie Listy

0

Hej,
zastanawiam się czy coś takiego jest możliwe...

W view model mam listę

public List<string> MyList { get; set; };
MyList = new List<string>();
MyList.Add("wartosc 1");
MyList.Add("wartosc 2");
MyList.Add("wartosc 3");

W widoku mam dwie kontrolki TextBox. Myślałem, że może uda mi się dostać do poszczególnych elementów listy przez nawiasy kwadratowe:

<TextBox Text="{Binding Path=MyList[0]}"/>
<TextBox Text="{Binding Path=MyList[1]}"/>

...ale tak niestety nie działa. Można to jakoś osiągnąć - z poziomu XAMLa dobrać się do poszczególnych elementów listy, żeby już nic więcej nie dodawać po stronie view model?

0

Jeżeli elementy mają być obok siebie utwórz ItemsControl, jako ItemsSource podaj swoją listę. Następnie edytuj ItemsContainer na WrapPanel, ustaw jego właściwość IsItemsHost na true. Ostatnim krokiem będzie edycja ItemTemplate w ItemsControl. Wstaw tam swój TextBlock. Twoim DataContext będzie element z listy, czyli string. Sorki za brak formatowania ale pisane z komórki

0

Tak jak OP @No.Way napisał to przecież działa (i powinno, zgodnie z dokumentacją):

screenshot-20210327204348.png

0

Ale to bez sensu tworzyć listę wtedy.
@Ktos a jeżeli ma być tak jak autor napisał i mu nie działa to może o prostu widok się nie odświeża. Będzie się tak działo jeżeli elementy nie zostaną dodane w konstruktorze. Pomoże na to ObservableCollection. Drugim powodem może być to, że Twój View Model nie jest przypisany do DataContext.

Pokaż cały kod xaml

1 użytkowników online, w tym zalogowanych: 0, gości: 1