問題タブ [logical-tree]

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 に答える
11870 参照

wpf - バインディング要素名。ビジュアル ツリーまたは論理ツリーを使用しますか。

を持っ{Binding ElementName=foo}ている場合、視覚ツリーまたは論理ツリーを検索しますか?

WPF の論理ツリーとビジュアル ツリーについて | データを見る、データする

論理ツリーが重要になるのはいつですか?

{Binding ElementName=Foo} などで名前を検索すると、継承可能なプロパティの場合と同じように、名前の範囲を検索するために祖先が検索されます。

アタッチされた動作による Silverlight での ElementName バインディング

これを有効にするために、WPF は ElementName および RelativeSource バインディングを提供し、ビジュアル ツリー内の他の要素を見つけてバインドするための強力なメカニズムを提供します。

編集:

によるバインドに使用される論理ツリーのように見えますElementName

引数#1。

MSDN の記事FrameworkElement Classによると:

FrameworkElement は UIElement を拡張し、次の機能を追加します。

  • データ バインディングと動的リソース参照のサポート: データ バインディングとリソースのプロパティ レベルのサポートは、DependencyProperty クラスによって実装され、プロパティ システムに具体化されますが、式 (プログラミング構造) として格納されているメンバー値を解決する機能データ バインディングと動的リソースの両方の基盤となる) は、FrameworkElement によって実装されます。詳細については、「データ バインディングの概要」および「リソースの概要」を参照してください。

引数#2。

ElementNameを指してx:Nameいるので、この名前は何らかの方法で見つける必要があります。NameScopeの概念があります。

ほとんどのシナリオでは、FrameworkElement および FrameworkContentElement で公開されている FindName メソッドは、名前で要素を検索するために呼び出すより適切なメソッドです。FrameworkElement および FrameworkContentElement によって公開される Name プロパティは、初期名をマークアップ属性として設定するために使用するより適切なプロパティです。また、FrameworkElement および FrameworkContentElement で公開されている RegisterName メソッドは、名前を特定の名前スコープに確立するために必要です (これを直接実行できる NameScope メンバーはありません。RegisterName を使用するには、最初に現在の名前スコープを設定する必要があります)。

一方、Visual クラスにはメソッドがなく、 INameScopeFindNameも実装されていません。

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

wpf - WPF:DataContextChangedが論理的な子で発生しないのはなぜですか?

カスタムPanelコントロールの論理的な子でDataContextChangedが発生しないという問題があります。私はそれをこれに絞り込みました:

ウィザードで生成されたWPFアプリケーションから始めて、次を追加します。

私が理解しているように、DataContext継承可能な依存関係プロパティであるため、これは機能します。

ここで、ウィンドウ(this)とその論理子の両方にDataContextChangedのイベントハンドラーを追加します。

これを実行すると、最初のイベントハンドラーのみが実行されます。どうしてこれなの?AddLogicalChild(elt)の代わりに、次のようにします。

両方のハンドラーが実行されます。しかし、これは私の場合のオプションではありません-視覚的な子ではないはずのFrameworkContentElementsをコントロールに追加しています。

何が起きてる?AddLogicalChild()以外に何かを実行して、機能させる必要がありますか?

(幸い、かなり単純な回避策があります。要素のDataContextをウィンドウのDataContextにバインドするだけです)

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

0 投票する
0 に答える
5917 参照

.net - 視覚ツリーと論理ツリーの概念

Visualおよびツリーの概念は理解していますlogicalが、これらの実際の使用法と必要性をまだ理解できていません。これらのツリーについてすべてを知る必要はありませんが、いくつかの高度なシナリオでは役立つと思います。

私はすでに次の記事を読んでおり、概念を理解しています

http://www.codeproject.com/KB/WPF/WpfElementTrees.aspx

http://blogs.msdn.com/b/mikehillberg/archive/2008/05/23/of-logical-and-visual-trees-in-wpf.aspx

私が理解したいのは、フレームワーク内でこれらを使用することです(簡単な言葉で理解しやすいシナリオで)? ビジュアル ツリーまたは論理ツリーを使用するタイミングを正確に把握するにはどうすればよいでしょうか。これらの木を視覚化するのに役立つ他の情報はありますか?

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

wpf - 非表示のノードと折りたたまれたノードを含む論理的な子を検索します

私はこの問題の答えを見つけようとしましたが、すべての投稿で、子供を再帰的に見つけるための答えがありますが、隠された子供や倒れた子供には効果がありません。

また、すべての投稿で誰かがこれが可能かどうか尋ねましたが、誰も答えていないので、私はこれが不可能だと思い始めています

誰かがこれを行う方法を持っているなら、私は永遠に感謝します。

私の関数は次のようになります。

-編集済みだから、私の問題は、アイテムが作成される前にアイテムを見つけようとしていたことだと気づきました。

xamlのプロパティにバインドして、指定された名前のアイテムを検索しましたが、その時点でアイテムは作成されていませんでした。xamlでアイテムを並べ替えると、機能し、アイテムが見つかります。 .. doh!

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

wpf - 親が成功したときに子要素を別の要素にバインドすると、バインドが失敗するのはなぜですか?

3番目のUIオブジェクト(この例ではボタン)を参照できる2つのクラスがあるとします。

さらに、親クラスには子クラスの要素を含めることができます。

両方が同じコントロールにバインドされている場合、同じ方法で、子は失敗しますが、親は成功します。

これはWPFのバグですか?


親 :


そして子供:

わかった -

次に、次のようにXAMLに追加するとします。

まったく同じ表記を使用しているのに、バインディングが親で機能するのに子で失敗するのはなぜですか?


これが私のテストコードです...

そして、これがテスト結果です...

親ボタンの参照はSystem.Windows.Controls.Buttonです。

子ボタンの参照はnullです!

0 投票する
4 に答える
3784 参照

algorithm - ネストされた論理式を評価するためのアルゴリズム

評価したい論理式があります。式は入れ子にすることができ、T (True) または F (False) と括弧で構成されます。括弧 "(" は「論理 OR」を意味します。2 つの用語 TF が隣り合っている場合 (または他の 2 つの組み合わせが隣り合っている場合) は、ANDED (論理 AND) である必要があります。

たとえば、式:

この問題を解決するためのアルゴリズムが必要です。最初に式を論理和または論理積の正規形に変換してから、式を簡単に評価できるようにすることを考えました。しかし、式を正規化するアルゴリズムが見つかりませんでした。助言がありますか?ありがとうございました。

問題の説明はここにあります: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=2&category=378&page=show_problem&problem=2967

編集:問題の一部を誤解しました。与えられた論理式では、AND/OR 演算子はすべての括弧 "(" と交互に使用されます。式をツリーで表す場合、AND/OR 演算子はサブツリーの深さレベルに依存します。ただし、最初に、最も深いレベルのツリーは AND ツリーであると仮定しました. 私の仕事は、おそらくツリーを構築することによって、与えられた式を評価することです. 問題の正しい要件を明確にした以下の回答に感謝します.

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

c# - WPF-e.OriginalSourceの視覚的な所有コントロールを見つけるPreviewMouseLeftButtonDown

非常に簡単な質問です。

PreviewMouseLeftButtonDownイベントにアタッチしました。このイベントがトンネルすることを知っているので、ビジュアルツリーの最初のアイテムにe.OriginalSourceのフラグが付けられます。

例:

「MainGrid」という名前のグリッドがあります。このグリッドにはラベルが含まれています。

そのグリッドにPreviewMouseLeftButtonDownイベントを設定し、ラベルをクリックすると、PreviewMouseLeftButtonDownイベントがトリガーされます。

このためのMouseButtonEventArgsには、OriginalSource(e.OriginalSource)が含まれています。ラベルの内側をクリックする場所に応じて、これは境界線である可能性があります...これはテキストブロックであるか、境界線である可能性があります。

ビジュアルツリーを歩き、「MainGrid」を見つけたい。これを再帰的に行う方法は知っていますが、所有者のタイプがわからない場合はどうなりますか。私は所有者を見つけたいと思っているだけです(つまり、これは一般的である必要があります)。

「e.OriginalSource.ORIGINAL_OWNER」のようなもの

これが明確でない場合は、喜んで詳しく説明します。

ありがとう

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

c# - 論理的な依存関係を階層順にリストする再帰的な方法を作成しようとしています

ウィンドウ内のすべてのビジュアルを取得するためにヘルパーを使用しましたVisualTreeが、一部の特定のコントロールが返されるリストに表示されないことがあります。これは、私が知る限り、それらがまだレンダリングされていないためです。VisualTree列挙は、コントロールが既にレンダリングされている場合にのみ役立ちます。

現在、代わりにウィンドウ内のすべての論理オブジェクトをリストする単純な再帰的メソッドを作成しようとしているので、それらがレンダリングされる前にそれらを操作できます。

だから、これが論理ツリーのためにこのようなものを作成する私の最初の試みです: