WPF ListBox以不同方式显示最后一项

时间:2011-04-29 13:52:51

标签: wpf xaml listbox datatemplate controltemplate

我希望有一个列表框,允许用户从数据库中提取20个项目,如果要提取的项目更多,则在列表框的最后一行显示提示。当用户点击最后一行时,应该从数据库中检索其他项目,直到没有更多项目,最后一行显示此信息。

首先:

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

按下按钮后:

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

这一切只能在XAML中完成吗? 实现这个目标的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:2)

Dude - 一切可以使用XAML完成:D

遵循MVVM方法,我建议您执行以下操作:

1 /入门:DockPanel

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

2 /将ListBox绑定到ViewModel中的ObservableCollection

<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删除内容)