質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1161閲覧

TreeView 親要素を知りたい

ElecDove

総合スコア254

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

1クリップ

投稿2017/07/05 06:58

お世話になっております.

WinFormの頃はTreeViewで,
たとえばSelectedItemから.Parentみたいなプロパティから比較的簡単に親要素を知ることができたと思います.

WPFではどのようにして親要素を知ることができますでしょうか.

バインドしているオブジェクトのクラス側で親要素を覚えておくというのは思いつきましたが,ツリー内でノードの削除や移動を繰り返すとどこかで親要素の更新漏れが生じてバグを生みそうだな,と思いました.

よろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

バインドしているオブジェクトのクラス側で親要素を覚えておくというのは思いつきましたが

それでいいのでは。VMで処理を統一したほうがいい。

ツリー内でノードの削除や移動を繰り返すとどこかで親要素の更新漏れ

気になるなら、適宜、ルートから、親要素の更新処理をすればいいのでは。典型的な再帰処理。

投稿2017/07/05 07:05

kiichi54321

総合スコア1984

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ElecDove

2017/07/05 07:09 編集

回答ありがとうございます 特に親要素を知る方法が用意されているわけではないのですね >適宜、ルートから、親要素の更新処理をすればいいのでは。典型的な再帰処理。 対処療法かと思いましたが,確実ですね(笑 いっそ,削除・移動後は毎回実行してやってもよさそうです(せいぜい数百~数千ノード程度なので)
ebiryo

2017/07/05 07:28

kiichi54321さんに同意です。VM内で処理すべきことだと思います。 そもそもVMが保持している内容がViewにおいてどのように「表現」されているか、などVMが関知することではないと思います。
kiichi54321

2017/07/05 07:54

数千ノードだと、体感として重く感じるような。常識的には、追加、移動、削除をメソッドを定義して、必ずそこを使って処理を行うという感じにつくるべきですね。
ElecDove

2017/07/05 08:00

早速コードを書き換えてParentメンバを追加しました 思ったとおりの動作をしてニコニコしています(笑 まだ再起処理のほうは実装していないのでどのくらいのパフォーマンスになるかわかりません・・・. >常識的には、追加、移動、削除をメソッドを定義して この辺がきちんとできていれば大丈夫でしょうか やってみたいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問