Windows 8 如何给出一个“答案”;空ListView消息";当没有数据源时

Windows 8 如何给出一个“答案”;空ListView消息";当没有数据源时,windows-8,microsoft-metro,windows-runtime,winjs,Windows 8,Microsoft Metro,Windows Runtime,Winjs,我的应用程序有一个带有GridLayout的ListView。我现在正试图将ListView组引入到我的应用程序中。比如说,数据源通常有Group1、Group2和Group3。我想显示所有3组的所有时间,无论是否有元素在它。当组中没有元素时,我希望在组标题下显示一条“空组”消息 我认为WinRT处理它的默认方式是不显示空组,并且在许多情况下都很有意义。要做到这一点,我知道我可能能够在没有数据的情况下向列表视图中添加一个虚拟项,但这有点骇人听闻 那么,有更好的方法吗?只需将ListView绑定到

我的应用程序有一个带有GridLayout的ListView。我现在正试图将ListView组引入到我的应用程序中。比如说,数据源通常有Group1、Group2和Group3。我想显示所有3组的所有时间,无论是否有元素在它。当组中没有元素时,我希望在组标题下显示一条“空组”消息

我认为
WinRT
处理它的默认方式是不显示空组,并且在许多情况下都很有意义。要做到这一点,我知道我可能能够在没有数据的情况下向列表视图中添加一个虚拟项,但这有点骇人听闻


那么,有更好的方法吗?

只需将ListView绑定到组对象集合(其中Group是您定义的类,Group1、Group2和Group3就是这样的组对象)

除了组级属性(例如标题)之外,还可以让组包含项目对象的集合

在ListView的datatemplate中,使用另一个ListView显示每个组的项元素


不过要小心,GridView的嵌套将导致嵌套的ScrollViewer。您可能希望通过更改控件模板从内部GridView中删除ScrollViewer。

谢谢您的建议,但我不认为这比添加虚拟列表视图项更好……因为您不需要虚拟项?我假设一个虚拟项目需要相当复杂的逻辑来确保虚拟项目以您想要的方式显示,并且不会像真实项目那样对点击和点击以及其他事件做出反应。这种方法消除了所有这些。