問題タブ [composite]

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 投票する
4 に答える
6963 参照

asp.net - ASP.net が動的に作成したコントロール イベント処理

基本的に、ページの読み込み時にプレースホルダーをページに動的に追加しています。

次に、プレースホルダーに追加され、特定のページ イベントの実行時に表示される複合コントロールがあります。複合コントロールにはボタンがあります。複合コントロールで使用できるボタンのパブリック イベント ハンドラーがありますが、実際にはページ コードでこのイベント ハンドラーに直接アクセスすることはできません。

コントロールを表示するには、たとえば次の呼び出しを行います。

次に、私が持っているページでprotected void OnClick(object o, EventArgs args) {}

もちろん、呼び出すときはcreate()、イベント ハンドラを複合コントロールのボタン クリック イベントに関連付けます。ここまでは順調ですね。ボタンが配線されていると、ボタンのクリックが期待どおりにコントロールにポストバックされます。ただし、イベントがページのイベント ハンドラーに戻ることはありません。

ポストバックで問題が発生していることに気づきました。しかし、init、load、または createchildcontrols でボタンを配線しようとしても、ページでイベントを処理できるように配線を適切に保つことができません。私が望むのは、実行時にイベントハンドラーを複合コントロールに渡し、複合コントロールがポストバック時にイベントを正しくページに送り返す機能です。

興味深いことに、カスタム eventargs を指定して OnBubble を呼び出すと、ページ上のバブル イベントをキャッチできます。しかし問題は、プレースホルダーがページ上にあることです。そのため、MyControl.Create()たとえば、UserControl を呼び出そうとすると、バブルは UserControl ではなくページに移動します (予想どおり)。したがって、オーバーライドするのではなく、イベントハンドラーを宣言することを好む理由ですOnBubble(MyControl を宣言する UserControls およびその他のコントロールは、ボタン クリック イベントに対して本質的に役に立たなくなります)。

誰かが問題について何らかの洞察を持っていることを願っています。興味深い問題のように思えますが、ページ上でコントロールを明示的に宣言し、マークアップまたはページロードでイベントを直接接続する以外に解決策はないかもしれません。ボタンで非同期コールバックを行うことを検討しますが、可能であれば標準の ASP.NET イベント処理を使用することをお勧めします。

ありがとう!

明確にするために、MyControl.Create()呼び出しは実際には複合コントロールのCreate()メソッドを呼び出すイベントを生成します。MyControl.Create()これで問題ありませんが、メソッドがコントロールに直接アクセスできないことに注意してください。コントロールはマークアップではなくページに追加されるため、これは理にかなっていますonload

より多くのコード:

編集:イベントハンドラーをセッションに保存し、ポストバックのボタンを接続する試みは成功しました。私はこれを良い習慣とは考えていませんし、実際に私の目的に役立っているとは思いません。たとえば、この場合、ページのイベントは期待どおりに実行されますが、ページの動作は標準的ではありません。たとえば、Response.Redirect() は例外をスローします。イベントハンドラーはポストバック中に状態情報を失った可能性があるため、これは理にかなっています。いくつかの考え: 1. このコントロールに何らかの形で関連するカスタム バブル イベントを作成することは可能ですか? これはもっともらしいように思えますが、ページのポストバックの問題により、バブルがどこに行くべきかという同じ問題が残ります。したがって、create() を呼び出すと、バブルの宛先として UserControl を自動的に登録することは可能ですか? 難しそうです。2. デリゲートがポストバックで正しく呼び出されるように、UserControl 宣言されたイベント ハンドラでイベントを再配線できるページ ライフサイクルのポイントはありますか? これは私が欠けているもののようです。イベント ハンドラはポストバックで作成されますが、OnClick 中に UserControl で再作成されないため失われます。UserControl で明示的に再作成する必要はありませんが、子コントロールで UserControl 用に再作成する必要があります。単純な要求のように聞こえますが、UserControl がループから外れると、不可能なことを要求している可能性があります。デリゲートがポストバックで正しく呼び出されるように、UserControl 宣言されたイベントハンドラーでイベントを再配線できるページ ライフサイクルのポイントはありますか? これは私が欠けているもののようです。イベント ハンドラはポストバックで作成されますが、OnClick 中に UserControl で再作成されないため失われます。UserControl で明示的に再作成する必要はありませんが、子コントロールで UserControl 用に再作成する必要があります。単純な要求のように聞こえますが、UserControl がループから外れると、不可能なことを要求している可能性があります。デリゲートがポストバックで正しく呼び出されるように、UserControl 宣言されたイベントハンドラーでイベントを再配線できるページ ライフサイクルのポイントはありますか? これは私が欠けているもののようです。イベント ハンドラはポストバックで作成されますが、OnClick 中に UserControl で再作成されないため失われます。UserControl で明示的に再作成する必要はありませんが、子コントロールで UserControl 用に再作成する必要があります。単純な要求のように聞こえますが、UserControl がループから外れると、不可能なことを要求している可能性があります。ただし、子コントロールで UserControl 用に再作成する必要があります。単純な要求のように聞こえますが、UserControl がループから外れると、不可能なことを要求している可能性があります。ただし、子コントロールで UserControl 用に再作成する必要があります。単純な要求のように聞こえますが、UserControl がループから外れると、不可能なことを要求している可能性があります。

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

python - GTD アプリの複合パターン

これは私の以前の質問の続きです

これが私のクラスです。

これが私が抱えている問題です。いくつかの小さなプロジェクトで大きなプロジェクトを構築する場合、プロジェクトが何であるか、または現在のプロジェクトのアクションを確認したいのですが、それらすべてをツリーに表示しています。これが私が使用しているテストコードです (異なる方法が機能することを確認するために、テストするプロジェクトとアクションを追加するいくつかの異なる方法を意図的に選択したことに注意してください)。

人生にはいくつかのプロジェクトがあり、その中にいくつかのプロジェクトがあるはずです。構造は次のようになります (インデントはプロジェクトで、- はアクションです)。

私が見つけたのは、 life.actions() がツリー内のすべてのアクションを返すはずなのに、何も返さないということです。life.projects() は、「結婚する」、「子供を持つ」、「退職する」だけが必要な場合に、サブプロジェクトを含むすべてのプロジェクトを返します。私が間違っているのは何ですか?

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

dependency-injection - Prism/Unity でビュー (UserControl) を自動的に解決するにはどうすればよいですか?

複合アプリケーション (Prism) でモジュールをロードすると、次のエラーが発生します。

{"現在のビルド操作 (ビルド キー Build Key[CustomersModul.ViewModels.CustomerAllViewModel, null]) が失敗しました: コンストラクター CustomersModul.ViewModels.CustomerAllViewModel(CustomersModul.Views.CustomerAllView ビュー) を呼び出そうとしたときに、パラメーター ビューを解決できませんでした。(戦略の種類 Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy、インデックス 2)"}

私はこのクラスを解決しています:

そして、そのクラスは次のようになります

通常、コンストラクター パラメーターを持たないプレゼンターを解決し、それらのビューを内部でインスタンス化します。View をパラメーターとして受け入れるViewModelを使用するのはこれが初めてです。

興味深いことに、Resharperを使用してビューに移動すると、XAML またはコード ビハインドに移動するかどうかを尋ねられるので、おそらく Prism はどちらをインスタンス化するか混乱していますか?

Prism でこのビュー (XAML とコード ビハインドを使用した UserControl) をパラメーターで自動的にインスタンス化するにはどうすればよいですか?

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

unity-container - Prism / Unityには「サービスプリローダー」がありますか?

Prismアプリケーションには、サービスから取得するのに3〜8秒かかるデータをロードするモジュールがいくつかあります。

私のブートストラッパーで次のようなことを言うことができるようにしたいと思います。

擬似コード:

そして、これはバックグラウンドスレッドで実行され、ユーザーが実際に変数「allCustomers」を必要とするときに、完全にロードされます。

このタイプのプリロードを行う自動サービスはPrism/Unityにありますか?

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

wpf - WPF バインディング: データベースからコンボをリロードした後にバインディングを更新する

「Make」と「Model」の 2 つのコンボがあります。それらの SelectedValue プロパティは、ModelID と MakeID を持つ Vehicle オブジェクトにバインドされています。

ヘレスモデル...

ユーザーは別のコントロールで Vehicles を検索できます。これにより、基になる Vehicle オブジェクトが交換されます。同じ Make の車両を切り替えると、すべて正常に動作しますが、Make が変更された場合は、データベースに移動して ModelSpec コレクションをリロードします。バインディングを更新する必要があるため、コンボにはモデルの説明が表示されません。

私の現在の回避策は、モデルをリロードするメソッドの最後にこれを追加することです。これは正常に機能しますが、特にエレガントなソリューションではありません。

基本的に、INotifyPropertyChanged をトリガーしているだけです ...

私は似たような洗練されていない解決策をいくつか思いつくことができますが、もっと良い方法があるに違いありません! どんな助けでも大歓迎です!

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

c# - 複合クラスパターンへのWPFデータバインディング?

初めて WPF を試していますが、他のオブジェクトの構成を使用して構築されたクラスにコントロールをバインドする方法に苦労しています。たとえば、2 つの別個のクラスで構成されるクラス Comp があるとします (わかりやすくするために、さまざまな要素が省略されていることに注意してください)。

これで、Comp で定義された「get」を使用して _int1 を簡単にバインドできることがわかりました。しかし、要素 _part1._first、_part1._second にバインドするにはどうすればよいですか。クラス Comp レベルで「ゲッター」を公開していますか? または、複合クラス内でそれらを公開し、それらを指すバインディング パスを使用できますか? そして、これはプロパティの設定でどのように機能しますか?

ということで、これがパターン?

それともこのパターン?(パスに何を入れればよいかわからない場合)

それとも、MV-VM を再発明しようとしているのですか (ゆっくりと理解し始めています)。

では、どうすればよいのでしょうか。それが最初または 3 番目のパターンである場合、UI 要素にバインドできるように、素敵な (異種の) 階層データをすべて取り込んでフラットな構成にまとめたようです。これはどうあるべきか、それとももっと良い方法がありますか (2 番目のパターン??)

編集

私は本当に双方向バインディングが欲しいという質問を省きました。そのため、プロパティ アクセサーは本当に get と set を持つ必要があります。

編集

セッターとゲッターを表示するように擬似コードを更新しました

編集

Mark と Julien によって提供されたパターンに従い、セッターを実装したところ、結果に満足しました。何らかの理由で、プロパティの設定が最終的なエンティティまでずっと続くわけではないことを確信しました。

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

c# - CABでは、サービスは独自のモジュールですか?

私はCompositeApplicationBlockを学んでいて、サービスについて頭を悩ませてきました。私は自分のシェルアプリケーションを独自のソリューションに、そしてもちろん独自のソリューションにテストモジュールを持っています(シェルソリューションの外部で完全に独立してテストを開発およびテストしています)。「SQLサービス」という名前のサービスを作成した場合、シェルとモジュールの両方がタイプを認識できるように、これを独自のライブラリに配置する必要がありますか?

その場合、良い習慣として、サービスプロジェクトをシェルソリューションに配置する必要がありますか、それともモジュールとしてロードされていなくても、モジュールのように外部に配置する必要がありますか?

では、参照についてはどうでしょうか。シェルはこれを直接参照し、サービスを追加してから追加する必要がありますか?または、モジュールとしてロードしてサービスを追加しますか?

サービスはどこで作成すればよいですか?モジュールとして参照またはロードする必要がありますか?

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

mvvm - Prism (CAL) で、RegisterViewWithRegion の代わりに RegisterPresenterWithRegion を登録するにはどうすればよいですか?

Prism アプリケーションにモジュールがあり、その初期化メソッドで、ビューの代わりにプレゼンターを領域に登録したい、つまり、これを行いたい:

疑似コード:

次のようなビューをロードする代わりに:

もちろん、プレゼンターは独自のビューを持ってきて、最終的にこのビューをリージョンに登録しますが、XAML で 2 つをバインドする代わりに、プレゼンターのコンストラクターでプレゼンターをビューにバインドできます (これは、より分離された方法です)。ここでは避けたい MVVM パターン)。

ビューではなくリージョンにプレゼンターを追加するにはどうすればよいですか?