型号:
让我们假设我有Book模型。
public class Book
{
public string Author { get; set; }
public string Title { get; set; }
public string Genre { get; set; }
public DateTime Published { get; set; }
}而且,我有这样一个DataService。它拥有使客户端的账簿保持最新的事件:
public interface IBookService
{
List<Book> GetAllBooks();
// Book changed event.
EventHandler<BookChangedEventArgs> BookChanged;
// Book added/removed event.
EventHandler<BooksCollectionChangedEventArgs> BooksCollectionChanged;
}WPF (MVVM) UI客户机:
我有BookViewModel类(wraps Book)。我有一个ObservableCollection<BookViewModel>,它与IBookService接口的一些实现同步。
所以问题是。有必要允许用户使用选择一本书(不是流派,而不是作者)的,其UI如下:

BookViewModel的平面集合应该按顺序进行“分组”(或者我不知道如何正确称呼它):
因此,每个级别都是其后代级别的主。
此外,您还可以提到前一个/下一个按钮。他们应该浏览图书级别的(最后一个):例如,如果选择了最后一本书,然后按next (请参阅图像),UI的下一个状态应该是: second state =>第二作者=> Some (属于第二种类型和第二作者)。
如何实现这样一个复杂的UI:多级分组?实现这样的图书浏览器最简单的方法是什么?如果你能给我提供一些类似的例子,我将不胜感激。
发布于 2012-07-03 20:54:08
他是瑟吉
我只需要使用一个SelectBookViewModel来实现您的IBookService。这个ViewModel包含一个Collection<Book>或一个ObservableCollection<Book>。每次获得更新图书集的UpdateEvent时,都会对该集合执行LINQ查询,以获得以下类型的列表:
GenreListProperty = (from book in books
select book.Genre).Distinct().ToList();将您的第一个ListView绑定到这个GenreListProperty。根据第一个列表框的ListViews属性的更改事件,执行其他逻辑来查询其他SelectedItem的相同样式的列表。
这些按钮只是在ListViews上进行一些导航,并且它们在SelectedItem上的更新逻辑发生了变化。当按下Ok按钮时,您只需在Book-Collection上执行一个组合LINQ查询,以选择您的处理过程中所选择的一个。
https://stackoverflow.com/questions/11318396
复制相似问题