モデル:
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
クラス(ラップBook
)を持っています。ObservableCollection<BookViewModel>
インターフェイスの実装と同期されているがありますIBookService
。
では、質問です。次の UIを使用して、ユーザーが(ジャンルや著者ではなく) 書籍の 1 つを選択できるようにする必要があります。
のフラットコレクションはBookViewModel
、どういうわけか順番に「グループ化」する必要があります(または、正しく呼び出す方法がわかりません):
- ジャンル。
- 著者(選択したジャンル)。
- 本 (選択したジャンルと選択した著者)。
したがって、各レベルはその子孫レベルのマスターです。
また、前へ/次へのボタンについて言及することもできます。本のレベル(最後の本)をナビゲートする必要があります。たとえば、最後の本を選択して [次へ] を押すと (画像を参照)、UI の次の状態は次のようになります。 (第 2 のジャンルと第 2 の著者)。
このような複雑な UI を実現する方法: マルチレベルのグループ化? そのようなブック ブラウザを実装する最も簡単な方法は何ですか? 似たような例を教えていただければ幸いです。