問題タブ [visual-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 投票する
1 に答える
72 参照

wpf - VisualTree にないコントロールを表示する方法

ばかげたタイトルで申し訳ありませんが、私の要件はそれに非常に似ています。

から拡張された CustomControl がありDatePickerます。このための個別の制御構造はありません。その構造にポップアップをアタッチする必要があります。したがって、カスタム コントロールのコンストラクターで、配置ターゲットをカスタム コントロールとして新しいポップアップを初期化しています。

ここで、このポップアップがビジュアル ツリーに表示されないことがわかっています。ボタンをクリックすると、このポップアップが表示されるようにする必要があります..

私の悪い英語でごめんなさい。質問が明確であることを願っています...

ありがとう

0 投票する
3 に答える
1123 参照

c# - DataTemplate で生成された UIElement を見つける方法

こんにちは、DataTemplate から生成された UIElement を見つけようとしています

しかし、ContentPresenter のどこかにあるはずの UserControl を見つけることができません。ブレークポイントとスヌープを介してコントロールを調べましたが、UserControl が見つかりません。

誰かが私がそれを見つけることができる場所を教えてもらえますか?

ここで私のテストプロジェクト:

アプリ XAML

意見

VM

メインウィンドウ XAML

コードビハインド

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

c# - wpf でのコンボ ボックス選択による奇妙な動作

私は、さまざまなドックオプションに非常に多くの子ウィンドウを持つメインウィンドウがあるアプリケーションに取り組んでいます。したがって、1 つのドックには、ユーザーが選択したエンティティのプロパティを変更できるプロパティ パネル ウィンドウがあり、値を変更した後、ユーザーはコントロールの下部にある適用ボタンをクリックする必要があります。したがって、ユーザーが何らかの値を変更し、適用をクリックする代わりに、ユーザーがプロパティ パネル ビューのサブ コントロール以外の場所をクリックすると、「最初にクリックしてください」というメッセージがユーザーに表示されるような、ある種の機能を用意したいと考えていました。適用して変更を保存します。」このために、MainWindow のマウス ダウン イベントに次のコードを書きました。

したがって、ロジックは次のとおりです。メイン ウィンドウのマウス ダウンで、ヒット オブジェクトを取得し、それがプロパティ パネル コントロールの子コントロールである場合は、親として PropertyPanelUserControl を持ち、一部または子コントロールではない他のコントロールを持つことを確認します。 PropertyPanelUserControl の場合、ユーザーは適用をクリックするように求められます。

上記のコードは見事に機能していました...しかし、私は奇妙な問題を見つけました.1から10までのエントリを持つコンボボックスがプロパティパネルにありました.そのため、ユーザーが値を他の値に変更しようとすると、ユーザーこれまでのところ、ユーザーがプロパティ パネル コントロールをクリックしていて、コンボ ボックスでアイテムを選択した後にマウス ダウン イベントでヒット オブジェクトをチェックすると、ヒット オブジェクトは chromeButton またはコンボ ボックスであったため、そのメッセージは表示されません。しかし、最後のアイテム10を選択すると、ヒットオブジェクトがプロパティパネルコントロールを持つ境界線として表示されます。

<Border><View:PropertyPanelControl/></Border>上記のチェックは失敗します。境界線にはプロパティ パネル コントロールとして先祖がなく、むしろ境界線がコントロールの先祖であるためです。したがって、コンボボックスの値のみを変更している間でも、ユーザーはメッセージを受け取ります。さらに、外側ではなくコンボボックスの項目をクリックしていることを確認しました。したがって、wpf がこの奇妙な方法で動作している理由と対処方法について質問します。この問題。

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

c# - 操作せずに XAML DataTemplate Listview の要素にアクセスする方法

C# ストア アプリがあり、DataTemplate セレクターを使用して、配列にバインドされた ListView コントロールで使用するテンプレートの種類を決定します。テンプレート化されているため、各 ListView 行に動的な x:Name を割り当てることはできません。

インデックスでリストビューの行にアクセスし、それらの可視性をオンまたはオフに設定できるようにする必要があります。私はこのようなことを試しましたが、.ItemContainerGenerator .ContainerFromItem(item);戻り値nullと毎回 Nullable 例外が発生します:

XAML DataTemplate 内のコントロールにアクセスするにはどうすればよいですか?

いくつかの調査を行った後、上記のソリューションは、SelectedItem に触れているか、設定されている場合にのみ機能するようです。こちらをご覧ください

ItemContainerGenerator が null を返すのはなぜですか?

ページの読み込み時 (初期設定) とボタンのクリック時にメソッドを呼び出して、特定の行の表示を変更できるようにする必要があります。

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

c# - 動的に設定された TabControl 内の TabItems に正しい DataContext を設定する

動的に入力された で正しいDataContextforにアクセスするのに問題があります。TabItemsTabControl

以下のコードを使用して、 my のをItemsSourcemy のTabControlにバインドします。ObservableCollection<TabViewModel>MainViewModel

のそれぞれのTypeプロパティに基づいて、異なるが のプロパティとして選択されます。これがうまくいかないのはここからですTabViewModelItemSourceUserControlContentTabItem

これらは に設定するUserControls必要がありますが、ダイナミックが別のビジュアル ツリーで作成されているように見えるため、これにアクセスすることはできません。DataContextMainViewModelTabItems

これを達成する方法についてのアイデア。ViewModels私がそれを助けることができるなら、私は本当にデータを参照する必要はありません。

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

wpf - VisualTree プロパティが複数回エラーを設定しました

このコードが、従業員番号、名前、およびトラック番号の実行でテキストブロックに「VisualTree が複数回設定されています」というエラーをスローするのはなぜですか? データ テンプレート内にあります。その部分をグリッドでラップしようとしましたが、うまくいきませんでした。