1

WPF Treeview を使用して OSX-Mail の Treeview-Control を模倣したいのですが、開始方法がわかりません。スクリーンショットの「MAILBOXES」と「SMART MAILBOXES」はフォルダーです。各フォルダの上にマウスを置くと、「表示」または「非表示」ボタンがフェードインします。そのボタンをクリックすると、子がスライドアウトします(スクリーンショットの「受信ボックス」、「送信」、および「今日」)。WPF を使用して似たようなものを取得するにはどうすればよいですか? ツリービューから始めるのは良い選択ですか?

どうもありがとう!

スクリーンショット

4

1 に答える 1

0

通常、このような一般的な質問はStackOverflowでは回答されません。試してみますが、あなたにできることの概要を説明する時間しかありません。

TreeViewを絶対に避けたのは私の経験です。論理的に動作せず、ノードを検索するときにコストがかかります。

ItemTemplateExpanderコントロールであるItemsControlを使用することで、必要な動作を得ることができると思います。ItemsControlは、フォルダーを表すオブジェクトのコレクションにバインドされています。

次に、 ExpanderのヘッダーをDataTemplateして、ホバー動作を模倣できます。ヘッダーは2つのTextBlockになります。1つはエキスパンダー、つまり「メールボックス」を識別するためのもので、もう1つは「表示」/「非表示」ラベル用です。

基本的に、「表示」と「非表示」は1つのTextBlockであり、 ExpanderのIsExpandedプロパティにアタッチされたDataTriggerによってテキストが設定されます。IsExpandedがtrueの場合は、テキストを「非表示」に設定し、falseの場合は、「表示」に設定します。

次に、各フォルダーにある残りのアイテムについて、 Expander内にItemsControlまたはListBoxを配置できます。ItemsControlまたはListBoxItemsSourceを各フォルダー内のアイテムにバインドします。次に、対応するItemTemplateを使用して、選択した方法でこれらのアイテムをデザインできます。

于 2012-09-18T16:27:38.433 に答える