問題タブ [icommand]

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

c# - WPF:ICommandにバインドされたTreeViewItem

WPFで最初のMVVMアプリケーションを作成するのに忙しいです。

基本的に私が抱えている問題は、WPFウィンドウに配置したTreeView(System.Windows.Controls.TreeView)があり、CommandViewModelアイテムのReadOnlyCollectionにバインドすることを決定したことです。これらのアイテムは、 DisplayString、Tag、およびRelayCommand。

これでXAMLに、TreeViewがあり、ReadOnlyCollectionをこれに正常にバインドしました。私はこれを見ることができ、UIですべてがうまく見えます。

ここでの問題は、RelayCommandをTreeViewItemのコマンドにバインドする必要があることですが、TreeViewItemにコマンドがないことがわかります。これにより、IsSelectedプロパティで、またはTreeView_SelectedItemChangedメソッドの背後にあるコードでそれを実行するように強制されますか?それともWPFでこれを魔法のように実行する方法がありますか?

これは私が持っているコードです:

そして理想的には私はただ行きたいです:

誰かが私が持っているRelayCommandインフラストラクチャを使用できるようにするソリューションを持っていますか?

みんなありがとう、大いに感謝します!

リチャード

0 投票する
5 に答える
13142 参照

wpf - Josh SmithによるRelayCommandの実装に欠陥がありますか?

Josh Smithの記事「Model-View-ViewModelデザインパターンを使用したWPFアプリ」、具体的にはRelayCommand(図3)の実装例を検討してください。(この質問については、記事全体を読む必要はありません。)

一般的に、実装は優れていると思いますが、のイベントCanExecuteChangedへのサブスクリプションの委任について質問があります。州のドキュメント:CommandManagerRequerySuggestedRequerySuggested

このイベントは静的であるため、弱参照としてのみハンドラーを保持します。このイベントをリッスンするオブジェクトは、ガベージコレクションを回避するために、イベントハンドラーへの強力な参照を保持する必要があります。これは、プライベートフィールドを用意し、このイベントにアタッチする前または後にハンドラーを値として割り当てることで実現できます。

しかし、のサンプル実装はRelayCommand、サブスクライブされたハンドラーに対してそのようなものを維持していません。

  1. これにより、弱参照がRelayCommandクライアントにリークされ、ユーザーがライブ参照RelayCommandの実装を理解してCanExecuteChanged維持する必要がありますか?
  2. もしそうなら、例えば、加入者RelayCommandの潜在的な時期尚早のGCを軽減するために、の実装を次のようなものに変更することは理にかなっていますか?CanExecuteChanged

    /li>
0 投票する
1 に答える
1248 参照

silverlight - Silverlight ボタン クリックを Prism DelegateCommand にバインドできないのはなぜですか

Silverlight 3 と Prism に簡単なテスト アプリがあり、ビュー モデルで作成した簡単なコマンドにボタン Click をバインドしようとしています。これは、コマンドを機能させるためのテストアプリです。実行すると、ビューがコマンドを見つけられないことを示すバインド エラーが表示されます。

System.Windows.Data エラー: BindingExpression パス エラー: 'MyCommand' プロパティが 'Bind1.ShellViewModel' 'Bind1.ShellViewModel' に見つかりません (HashCode=8628710)。BindingExpression: Path='MyCommand' DataItem='Bind1.ShellViewModel' (HashCode=8628710); ターゲット要素は 'System.Windows.Controls.Button' (Name='') です。ターゲット プロパティは 'Command' (タイプ 'System.Windows.Input.ICommand') です。

ここに私のシェルビューがあります:

ビューのコンストラクターで、ViewModel をインスタンス化します (コンテナーの使用についてはまだ心配していません...)。

ここに私のビューモデルがあります:

ボタン ラベル バインディングは正常に機能するため、ビューは ViewModel を正常に検出しています。

MyCommand が見つからないのはなぜですか? それは私を怒らせています-私は明らかに単純な非常に間違ったことをしています...

どうもありがとう。

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

c# - MVP の icommand

MVP (モデル - ビュー - プレゼンター) の ICommand 実装は、プレゼンターまたは独自のクラスに属しますか?

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

wpf - ボタンに対する WPF ICommand

ボタンの 1 つにカスタム IComand クラスを実装しました。ボタンはページ 'MyPage.xaml' に配置されますが、そのカスタム ICommand クラスは、MyPage コード ビハインドではなく、別のクラスに配置されます。次に、XAML からボタンをそのカスタム コマンド クラスにバインドし、次のようにします。

マイページ.xaml:

およびカスタム コマンド ボタン クラス:

私の問題は、ボタンの Execute および CanExecute メソッドが別のクラスにあり、ボタンが配置されているコードの背後にある MyPage.xaml をどのように言うかです。これらのメソッドが XAML ページの RemoveAllCommand クラスにあると言う方法。

また、ボタンでクリック マウス イベントが発生したときにこのコマンドを起動したいので、入力バインディングを行いますが、正しいですか?

ありがとう

0 投票する
5 に答える
18203 参照

wpf - WPF ViewModel コマンドの CanExecute の問題

ビュー モデルのコンテキスト メニュー コマンドに問題があります。

ビュー モデル内の各コマンドに ICommand インターフェイスを実装し、ビュー (MainWindow) のリソース内に ContextMenu を作成し、MVVMToolkit の CommandReference を使用して現在の DataContext (ViewModel) コマンドにアクセスします。

アプリケーションをデバッグすると、ウィンドウの作成時を除いてコマンドの CanExecute メソッドが呼び出されていないように見えるため、Context MenuItems が期待どおりに有効化または無効化されていません。

実際のアプリケーションを示す簡単なサンプル (ここに添付) を作成し、以下に要約します。どんな助けでも大歓迎です!

これはビューモデルです

DisplayValueCommand は次のとおりです。

最後に、ビューは Xaml で定義されます。

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

wpf - ユーザーコントロール内のコントロールを再利用する

UserControlUserControl1とUserControl1内のボタンがあります。そして、ボタンのICommandプロパティを持つUserControl1ViewModelがあります。このコマンドを使用して、VMの外部(他のVMまたはメインウィンドウのVMから)のメソッドを呼び出す必要があります。このためのベストプラクティスは何ですか?

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

mvvm - mvvmを使用してSilverlight 4のボタンにコマンドをバインドする

というユーザーコントロールがありますHomePage.xaml。ページのコンストラクターのコード ビハインド ファイルに (MVVM パターンを使用して) モデル インスタンスを作成しています。

呼び出さHomePage.xamlれたコマンドにバインドし、データグリッドにデータを入力したいボタンがあります。データグリッドにデータをバインドするために使用する があります。MainViewModelGetData()MainViewModelObservableCollection

コマンドをバインドせずにデータグリッドにデータを入力すると、正常に機能します。

ボタンを次のようにバインドしています。

MVVM を使用してコマンドをバインドするにはどうすればよいですか?

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

c# - ArcObjects のコマンド ボタンからドロップダウンの選択を取得するにはどうすればよいですか?

ArcMap の同じツールバーにドロップダウンとコマンド ボタンがあります。コマンド ボタンを使用しているときに、ドロップダウンの選択にアクセスできないようです。

ユーザーが選択したものを確認できるように、ドロップダウンを見つけるにはどうすればよいですか?

ありがとう

スコット

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

wpf - プレゼンターでWpfユーザーコントロールのボタンがICommandを起動しない

私は WPF が初めてで、WPF 複合アプリケーションを学習しようとしています。
1つのラベルと1つのボタンがあるモジュールであるユーザーコントロールを取得しました。
今、次のようなボタンの Command プロパティを使用しようとしています

私が持っているプレゼンターで

問題は、ボタンをクリックしても GetCustomerName() メソッドが実行されないことです