問題タブ [treeviewitem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
564 参照

c# - TreeViewItem 内にオブジェクトを格納していますか?

クラスのインスタンスを TreeViewItem 内に格納したいので、選択されている可能性のある項目のリストをプログラムで並べ替える必要はありません。

つまり、次のように見えるかもしれません

そのため、TreeViewPoppyseed が選択されるたびに、それが持つ Bagel のインスタンスを取得するために別のメソッドを実行する必要がなくなります。それはちょうどのようにすることができますTreeView.SelectedItem.Bagel;

このようなものはすでに存在しますか?

0 投票する
2 に答える
912 参照

wpf - WPF TreeViewの場合、TreeView.ItemContainerStyleを設定しながらテーマを使用するにはどうすればよいですか?

これをXAMLで使用して、JoshSmithのサンプルコードに基づくビューモデルからツリービューの子をロードします

これにより、TreeViewItemに使用しているテーマが無視されます。選択したアイテムのテキストが黒くなり、背景が濃い青になるため、読みにくくなります。上記のテーマとコードの両方を同時に使用する方法はありますか?

0 投票する
1 に答える
671 参照

asp.net-mvc - エラーが発生するアイテムを選択した後、ツリービューにノードを追加できません インデックスはリストの境界内にある必要があります。パラメータ名:インデックス

ノードを選択した後にツリービューにノードを追加すると、そのノードが追加され、アイテムが追加されずにエラーが発生し、インデックスがリストの境界内にある必要があります。パラメータ名:インデックス

私がフォローしているコードは

protected void IncreaseSortIndex(int sortIndex) {

}

この行にエラーが発生しています

0 投票する
2 に答える
3932 参照

wpf - wpfでTreeViewItemsを高速に展開

ツリービューからすべてのノードを展開する方法を知っています。

唯一の問題は、すべてのノードを拡張するのに約1分かかることです...これはおそらくアイテムが非常に多いためです。このプロセスをどのようにスピードアップできますか?


編集:

だから私はリストを持っています: List<ScanItems> MyFilesList

ScanItemは、FullName、Name、Size、DateCreated、ComparePathなどのプロパティと、必要なその他の特定のプロパティを持つクラスです。そのため、FileInfoクラスを使用しませんでした。

ScanFileScanItemsから継承するクラスであるため、他のカスタムプロパティが追加されたものと同じです。

ScanDirScanItemからも継承する別のクラスであり、次のプロパティがあります。

そのプロパティを含めた理由は、アイテムを含む別のリストを作成できるようにするためです。

ファイルのリストからツリービューにデータを入力する方法については、この質問を参照してください。

だから今、私はそのリストをツリービューにバインドする方法について自分自身を正しく説明したいと思います。

次に、ファイルをMyFilesListに追加する方法について説明します。ディレクトリ内のファイルを検索する再帰メソッドを作成しました。現在のディレクトリにファイルが含まれている場合は、ScanFileアイテムを追加します。フォルダが含まれている場合は、ScanDirオブジェクトを追加し、同じメソッドを再度呼び出して、ScanDirのリストを渡します。したがって、このプロセスは外付けハードドライブをスキャンするのに約8秒かかります。そのメソッドが実行された後、私のリストには4つのアイテムしか含まれない可能性がありますが、フォルダに5つのアイテムがあり、それらの5つのアイテムの1つがたまたまそのフォルダである場合と同様に、それらのアイテムの1つにはおそらく20のアイテムのリストが含まれます。追加のアイテムを持つことができます。

したがって、TreeView.DataContext = MyFilesListを実行すると、ツリービューに1秒未満でデータが入力されます。しかし、私が含めるとき:

ツリービュー内のそのスタイルは、ツリービューのロードに時間がかかります。

0 投票する
2 に答える
959 参照

wpf - 他の TreeViewItem の子である場合にのみ、選択した TreeViewItem への DataBinding

別のカスタム クラス (DoorControllerLabelInfo) の監視可能なコレクションを持つカスタム クラス (NewBlockLabelInfo) があります。NewBlockLabelInfo クラスをツリ​​ービューに正常にデータ バインドし、すべて正常に表示されます。

特定のプロパティにバインドされたデータであるテキストボックスがたくさんあり、これらを更新するとツリービューに反映されます。

プロパティのテキスト ボックスの 1 つのセットを、ツリービューで選択した項目にデータバインドしたい 選択した項目が指定したツリービュー項目 (監視可能なコレクション、ドア コントローラー) の子である場合

データ コンテキストは、ウィンドウ レベルで指定されます。

私はこれを行う方法を長い間懸命に探してきましたが、最良の方法は言うまでもありません。

TreeView の WPF XAML は次のとおりです。

ドア コントローラー TreeViewItem の子である場合にのみ、テキスト ボックスを TreeViewItem の選択されたアイテム プロパティ (またはデータバインドされたクラス プロパティ) にバインドするにはどうすればよいですか?

事前にありがとう オリバー

0 投票する
2 に答える
1018 参照

wpf - プログラムでボタンを単一の TreeViewItem に追加する方法

TreeView(TV) のコンテンツを動的に生成し、ツリーのソースとして使用しているアイテムの特定のプロパティに従って、いくつかの TreeViewItems(TVI) にボタンをアタッチしたいと考えています。

たまたま、アプリケーション内の 1 つの特定の TV のすべての TVI がこの機能を必要としています。タスクを単純化する可能性があるのは、そのツリーのすべてのルート項目にボタンが必要であるという事実です。言い換えると、TVI 内にある TVI を除いて、特定の TV 内のすべての TVI にボタンが必要です。

テンプレートの考えを考えていましたが、TV のすべての TVI にボタンを追加する方法しかわかりません。別のオプション (私は思う... これはまだ試していませんが、頭の中では問題ないように思えます) は、テレビのすべてにボタンを追加し、ソース項目の関連するプロパティをボタンの可視性にバインドすることですが、これは完全なハックのように思えますが、もっと洗練された解決策が必要だと私は確信しています。

これをやってのける方法についてのアイデアはありますか?

0 投票する
1 に答える
8198 参照

c# - WPFのHierarchicalDataTemplateでTreeViewItemの親を取得します

私はインターネットで見つけた2つの例をマージしています。1つは拡張選択スタイルに関するもので、もう1つはツリービューでの複数選択に関するものです。

ツリービューのくぼみを除いて、すべてが機能しています。私はすべてのコードを与えることができましたが、それはそれを解決しませんでした。

私の問題は次の方法にあります:

このメソッドは、ツリー内のtreeviewItemの深さを取得しようとします。問題は次のとおりelem.Parentです。常にnullです。その結果、深さは0になります。

私はを使用しているので、これが起こっていると思いますHierarchicalDataTemplate。私のxamlの一部は次のようになります。

ツリービューの私のスタイルのXAMLは次のようになります。

ParentHierarchicalDataTemplateにプロパティを埋めさせるにはどうすればよいですか?

0 投票する
6 に答える
1958 参照

wpf - 親から Tooltip プロパティを継承しないように TreeViewItems を取得する方法

TreeView がソリューション エクスプローラーとして機能する準 IDE であるアプリケーションがあります。ユーザーが設計するのは、このような画面レイアウトです。

私はもともとコンテキストメニューに問題がありました。上記の例では、MenuItem1 にはコンテキスト メニューがありませんが、MainMenu にはあります。さて、MenuItem1 は MainMenu からコンテキスト メニューを継承します。空のコンテキスト メニューを作成し、それを MenuItem1 に割り当てることで、これを実現しました。もっとエレガントなものが欲しいのですが。

ツールチップにも同じ問題があります。MainMenu に割り当てた場合、MenuItem1 は MainMenu に割り当てられたものを継承します。MenuItem1 ツールチップを null に設定しようとしましたが、何もしませんでした。"" に設定すると、空の文字列で MainMenu ツールチップがオーバーライドされますが、MenuItem1 にカーソルを合わせると、小さな空のツールチップ ボックスが表示されます。ボックスが空の文字列の場合、システムはボックスを表示しないほどスマートだと思っていましたが、明らかにそうではありませんでした。

子が親からコンテキスト メニューとツールチップのプロパティを継承しないようにするにはどうすればよいですか?

更新しました


これにはまだ問題があります。Snoop を使用して項目を分析したところ、これらのプロパティが継承されていることが示されましたが、継承を解除する解決策はまだ見つかりません。

私が考えることができる唯一の厄介なことは、すべてのツールチップが ToolTipOpening イベントを処理し、文字列を検査することです。文字列に長さがなければ、すぐに閉じてください。もっと良い方法があるはずです。

0 投票する
2 に答える
2344 参照

c# - wpf-treeViewItemsにdataTemplateを使用する方法

次のコードは例外をスローします。

(コードの一部を省略しましたが、メインの採用者はまだそこにいます...)例外はItemsControl.ItemTemplateのxaml解析例外です。

このコードを機能させる方法を教えてください。

ありがとう、李