WPF ListBox отображает последний элемент по-другому - PullRequest
2 голосов
/ 29 апреля 2011

Я хочу иметь список, который позволяет пользователю выбирать, скажем, 20 элементов из БД, и отображает подсказку в последней строке списка, если есть еще элементы для выборки.Когда пользователь нажимает на эту последнюю строку, дополнительные элементы должны быть извлечены из БД, пока их больше нет, а последняя строка отображает эту информацию.

Первая:

listitem1
listitem2
...
listitem19
listitem20
Button: <get_more>

после нажатия кнопки:

listitem1
listitem2
...
listitem39
listitem40
Info: <no more items>

Может ли все это быть сделано только в XAML?Что было бы лучшим решением для реализации этого?

1 Ответ

2 голосов
/ 29 апреля 2011

Чувак - Все можно сделать с помощью XAML: D

Следуя подходу MVVM, я бы порекомендовал вам сделать следующее:

1 / Начало работы: A DockPanel

<DockPanel LastChildFill="True">
   <Button DockPanel.Dock="Bottom" />
   <ListBox  />
</DockPanel>

2 / Свяжите свой ListBox с ObservableCollection в вашей ViewModel:

<ListBox ItemsSource="{Binding ListElements}" />

В ViewModel:

private ObservableCollection<String> _listElements;

        public ObservableCollection<String> ListElements
        {
            get { return _listElements; }
            set { _listElements = value; }
        }

3 / Привязать содержимое Button к предопределенному String:

<Button Content="{Binding ButtonString}" />

В ViewModel:

public String ButtonString
{
   get 
   {
      //There, define if there are any more things to display
   }
}

4 / Ваш Button запускает Command запускает метод, скажем GetMore():

<Button Content="{Binding ButtonString}" Command="{Binding GetMoreCommand} />

В ViewModel:

private void GetMore()
{
   //append to the _listElements new elements from the list 
   //Update the ButtonString if there are no more elements
}

И вот, пожалуйста!

(вы также можете, при необходимости, определить кнопку, удаляющую вещи из ObservableCollection, например)

...