WPF. ObservableCollection<string> ListBox binding

268
12 апреля 2017, 11:20

Как забайндить ListBox'у коллекцию строк? Со своим типом вопросов нет. А вот что делать с обычной строкой? Сделал как тут enSO: MVVM-How to Binding ObservableCollection of Strings into ListBox WPF но не помогло

ObservableCollection<string> searchResultList
<ListBox ItemsSource="{Binding searchModel.searchResultList}">
       <TextBlock Text="{Binding }"/>
</ListBox>
Answer 1

В оригинальном ответе на enSO речь идёт о замене части шаблона элемента списка, а не добавлении TextBlock в коллекцию ListBox, как сделали вы. В вашем случае будет достаточно просто:

<ListBox ItemsSource="{Binding searchModel.searchResultList}" />

Со строчками ListBox умеет работать без переопределения шаблона элемента.

Эквивалентной записью было бы:

<ListBox ItemsSource="{Binding searchModel.searchResultList}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Как верно замечают в комментарии, searchResultList должен быть публичным свойством, а не приватным полем.

Answer 2

Не работает потому что:

ObservableCollection<string> searchResultList

во-первых поле, а не свойство(Binding работает только со свойствами). Во-вторых оно приватное, должно быть public

public ObservableCollection<string> searchResultList { get; set; }

xaml:

<ListBox ItemsSource="{Binding searchResultList}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding }"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
READ ALSO
Как правильно обработать JSON средствами PHP?

Как правильно обработать JSON средствами PHP?

Всем привет! Пытаюсь обработать JSON:

229
Советы по улучшению кода

Советы по улучшению кода

Годен ли такой код вывода? Как его улучшить?

310
Как сравнить даты в формате String

Как сравнить даты в формате String

Здравстуйте, у меня есть дата в формате String, как мне определить, что прошло уже больше 4х секунд?

265