問題タブ [findname]
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.
silverlight - Silverlight の DataTemplate にない FindName メソッドの回避策はありますか?
C# コンパイラと Silverlight 2 のドキュメントによると、Silverlight は DataTemplate クラスの FindName メソッドを提供していません。ContentPresenter 内にある Border を見つけたいです。SilverLight 2 での最善の方法は何ですか?
wpf - TreeView で ItemTemplate コントロールを見つける
私のツリーの定義は次のとおりです。
TreeViewItem 要素を持っているので、対応する CheckBox を見つけようとしますが、
スロー
と
私にnullを与えます。正しい解決策とは?
.net - WPF - TreeView.FindName() の問題
TreeView.FindName() は、コンパイル時に Xaml ドキュメントに追加されたものの、実行時に動的に追加されなかったものを見つけることができるのはなぜですか?
c# - Window ではなく UserControl の子を検索する方法 - Window.FindName の置き換え
現在、1 つのメイン ウィンドウと、このウィンドウの子である多くの UserControls を持つ WPF プロジェクトがあります。このウィンドウの子の多くはタブです。メイン ウィンドウを、メイン ウィンドウとほぼ同じ機能を実装するユーザー コントロールに置き換えることに成功しました。
Window を UserControl に置き換えると、1 つの問題が発生しました。現在、アプリケーションは、以下に示す方法を使用して、親ウィンドウに基づいて表示するプログラミング タブを決定しWindow.FindName
ます。Application.Current.MainWindow
したがって、メイン ユーザー コントロールの適切な説明に置き換える必要があります。明確にするために、以下のエラーのある C# メソッドと、タブの wpf インスタンス化を参照してください。
Window.FindName() メソッドに関する注意- UserControl に置き換えた後に機能しない理由は、ここで説明されているように、FindName メソッドがビジュアル ツリーを上方向に検索するためです。
のように、x:Name に基づいてユーザー コントロールを見つける方法を知っている人はいますApplication.Current.MainWindow
か? また、名前が変更された場合に x:Name 文字列を探すよりも、UserControl を見つけるためのより良い方法はありますか?
現在 MainWindow を見つける方法 - MainUserControl を見つける必要があります。
プログラミング タブのインスタンス化。
c# - Window.FindName()が子UserControlのボタンのx:Nameを検出しないのはなぜですか?AKA NameScopesはどのように機能しますか?
したがって、以下のサンプルコードでは、メインウィンドウWindow1.xamlの子であるUserControlUserControldChildを作成します。FindName()
メソッドが以下のコードで「myButton」を見つけられないのはなぜですか?
これはWPFXAMLNameScopesと関係があるはずですが、 NameScopeがどのように機能するかについての適切な説明はまだ見つかりません。誰かが私を啓発できますか?
以下のUserControl:
これが適切に回答されない場合は、ここの投稿に記載されているFindName()を使用する代わりの方法を見つけました。
c# - WPF - FindName すべきではない場合に null を返す
FindNameは私にとって壊れています:(
私が探しているオブジェクトはそこにあります。証拠があります。
シナリオは次のとおりです。
popup
はnullですが、常にではありません。たまに。しかし、 null に設定されている場合でも、探している子がそこにいます。
null のときにブレーク ポイントを設定し、これら 2 つのスクリーンショットを取得しました。
これは、FindName が "popSelectIteration" に対して null を返す場所です。
しかし、時計を掘り下げると、そこに子供がいることがわかります。
それで、私は何が欠けていますか?FindName が見つからないのはなぜですか? スクリーン ショットからわかるように、これはタイミングの問題ではありません (FindName ウォッチは null ですが、ダイレクト パスは問題ありません)。
コントロールを見つけるより良い方法はありますか?
補足:問題のトグル ボタンの XAML に興味がある場合は、次の質問で見つけることができます: WPF - FrameworkElement - すべての子孫を列挙しますか? .
更新:これが失敗する場合と機能する場合がある理由を調べるために、いくつかの掘り下げを行いました。私は呼び出すアニメーションを持っていますNameScope.SetNameScope((DependencyObject)form, new NameScope());
(完全なメソッドコードはこちら)。その呼び出しの直後に、FindName が失敗し始めます。
私はその電話を本当に理解していません。コードをコピーして貼り付けたと思います。とにかく、コメントアウトしました。しかし、これが失敗する理由を知りたいです。
wpf - DataTemplate 内の要素にアクセスする... 複数の DataTemplate を取得するにはどうすればよいですか?
Listbox コントロール用に定義された 2 つの DataTemplates があります。1 つのテンプレートは非選択状態用で、もう 1 つは選択状態用です (非選択状態よりも詳細を表示します)。
ここの例に従いました:
コード ビハインドから DataTemplates 内の Elements にアクセスする方法について。
私はそれを正しく理解していますが、UnSelected DataTemplate の要素を見つけて返すだけです。しかし、選択した DataTemplate で要素を検索すると、NullReferenceException が発生します。
私は何が間違っているのでしょうか?
silverlight - UserControlの子コントロールとFindName
ContentPropertyAttributeを使用してその子パネルの1つのChildrenプロパティを公開するSilverlightUserControlがあります。これにより、ページのパネルに子コントロールを追加できます。
これは、ページの「tbTest」フィールドが存在することを除けば機能しますが、初期化されていません。よく調べてみると、InitializeComponentメソッドは(FindNameを使用して)TextBoxを見つけようとしますが、見つけられません(nullを返します)。
調査の結果、ネームスコープが問題であることがわかりました。UserControlには独自のネームスコープがあるため、ページのFindNameでは子を見つけることはできませんが、UserControlのFindNameメソッドでは見つけることができます。
子コントロールがInitializeComponentメソッドによって配置可能になるようにUserControlを変更するにはどうすればよいですか?標準のパネル(StackPanel、Gridなど)は問題がないように見えるので、解決策が必要ですか?
ありがとう
wpf - FindName() による動的に生成された Wcf コントロールの検索
親コントロール内のコントロールを検索する FramworkElement.FindName() メソッドは、単純なように思えます...
しかし、私はアンティを上げています.フレームワークは私がやろうとしていることを気に入っていないようです.
まず、さまざまな方法があることを認識しています。これは、私が WPF で作成する最初のフォームであることを覚えておいてください。
コレクション内のアイテムの数に基づいて、コントロールを StackPanel にロードしています。[ユーザーが入力した URL] 内のディレクトリの数によってコレクションが決定されるため、このメソッドは必須です。
このリストは、設計中にフォームに配置される垂直スタックパネルに水平スタックパネルを構築します。
したがって、dirStackPanel はフォーム上にあります。controlStackPanel を dirStackPanel に n 回挿入し、それぞれに識別名 (string)("controlStackPanel" + n) を付けます。
controlStackPanel にもコントロールを入力していますが、その親 (dirStackPanel) から名前で controlstackPanel を取得できないことを考えると、これは論点です。
例:
var getPanel = (StackPanel) this.dirStackPanel.FindName((string)("controlStackPanel" + n))
Null を返します
明確にするために、AT RUN TIME に挿入する各コントロールには名前が割り当てられており、ループを使用して簡単に取得できます。ただし、FindName メソッドは、親 "StackPanel" の最初の子コントロールでは機能しません。オブジェクトではなくnullを返し続けます。
何か案は?