2009-05-15 8 views
1

Hey there。私はこの質問が以前には出てこないことを願っています - 私は関連する質問のリストでそれを見つけることができませんでした。WPF TreeView(C#)のファイル情報を格納しています。

とにかく、私はかなり初心者のプログラマーです(コンピューティング・ディグリーの初年度なので、スクワットについて知っています)。現在、C#とWPFで遊んでいます。楽しみのために、私は単純な音楽ブラウザを作成しようとしています。まず、ディレクトリを読み込んでファイルを一覧表示し、ダブルクリックした場合は起動します。とにかく、私はTreeViewItemsを格納する方法に問題があります。私はそれを階層的なデザインとして保存する必要があるので、すべてのパスを作成したら、ループバックするか、何でもツリービューに移入することができますが、これを行う最善の方法はわかりません。 Atm、私はTreeViewItem [] [] []を使用しています - 実際には間違って考えている配列を含む配列の配列...

おそらく私はデータベースを作成し、そこからのツリービュー?唯一の問題は、XDのようなことは一度もしていないことです。

ありがとうございました!

-Edibles

答えて

0

ここでは、全体的なアーキテクチャを取り上げてみましょう。このシナリオでは、通常、データを表示するTreeView、データを表すクラスの種類、ファイル/データベース/ etcなどがあります。データの格納場所として使用します。

パターンは、ファイル/データベース/ etcからデータをロードする必要があります。エンティティを表すカスタムクラスタイプに変換します。次に、WPFバインディングまたは手動バインディングを使用して、そのソースをTreeViewにバインドします。

ツリーの各ノードで音楽アルバムを表すようにしたいとしましょう。アーティスト、アルバムタイトル、アルバム日付、曲リストなどで構成されたMusicAlbumクラスを作成します。このデータは、ファイル/データベース/などとシリアル化されています。

次に、そのデータをTreeViewにバインドします。 WPFは、カスタムオブジェクトのリストへの直接のバインディングをサポートしているか、バインディングを手動で構成できます。開発の方が新しい場合は、手作業によるバインディングを検討することをお勧めします。これは、構成が少し容易であり、優れた方法です。

ストレージに関しては、データベース(SQLiteなど)またはXMLファイルのいずれかをお勧めします。あなたが開発することを学んでいるので、私はXMLファイルから始めることをお勧めします。これはデータを表現する良い方法であり、データベースが行う複雑さにおいて同じオーバーヘッドを必要としません。あなたがこれを生産レベルに持っていれば、私は確かにデータベースを推薦するでしょう。

編集:質問自体は少し曖昧なので、正確に何を求めているのかについて具体的に説明したいと思うかもしれません。 TreeViewバインディングのコードサンプルが必要ですか、ガイダンスや全体的な構造が必要ですか?

0

エクスプローラスタイルのフォルダ構造で音楽にアクセスするのであれば、Windowsファイルシステムはすでにデータを取得するための集中ポイントを提供しているので、データベースは必要ありません。起動時にツリー全体を埋めることを慎重にしたいのですが、アプリケーションがツリーのナビゲートを開始する前にハードドライブの構造全体をクロールするのをユーザーが待たせたくないからです。必要なときにツリーアイテムをロードするプロセスは遅延読み込みと呼ばれ、ここでは答えの範囲を超えています。幸いにもthis Code Project articleはこれを正確に行う方法を示しています。

一方、ユーザーが特定のディレクトリを提供するWindows Media Playerライブラリのスタイルを模倣し、アーティスト、アルバムなどでMP3をナビゲートする方法を作成する場合は、おそらくになりますバックグラウンドでデータベースの種類。このような場合は、選択したフォルダ内のmp3からタグ情報を読み込み、情報をきちんと正規化されたデータベースに追加し(高速検索と相互参照を可能にするため)、ユーザーがこの方法でナビゲートできるようにUIを提供する必要があります。もう一度、木を怠ってロードすることを考えています - アーティストを選択し、リクエスト時にデータベースからのすべてのアルバム/曲を子ノードに移入します - しかし、そこに着く前に、データベースのタイプを選択し、スキーマを定義し、mp3タグを解析する方法などを学ぶ)、最初のオプションを指定したと仮定します。

関連する問題