問題タブ [canexecute]
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.
wpf - MVVMパターン内で「CanExecute」呼び出しを抑制できますか
WPFとMVVMパターンを使用してツリー構造を操作しています。まず、20個のルートノードを作成し、各ノードがクリックされるたびに子ノードを遅延読み込みします。たとえば...私が次の場合:
レベル1、2、および3は実行時にロードされます。レベル1.1、3.1、および3.2は、それぞれの親がクリックされるまでロードされません。1.1未満のレベルなどは、親をクリックすることで同じ方法でロードされます。
私の問題は、レベル1.1をクリックしてその子をロードすると、「CanExecute」メソッドがレベル1.1と、レベル1.1の各子のすべてのルートレベル項目についてチェックされることです。多数の子供がいる場合、これはかなりの無駄な時間を引き起こします。
私の質問は、「CanExecute」の呼び出しをなんとか抑制できるかということです。これらのサブレベルとして呼び出す必要はありません。バイパスしたいと思います。私はMVVMフレームワークに非常に慣れていないので、これが可能かどうかはわかりません。
wpf - AvalonDock でのコマンド バインディングの問題
アプリケーションの MainWindow にアタッチされた一連のコマンド バインディングがあるアプリケーションを作成しました。
(コードは簡潔にするために単純化されています)
プロジェクトの ViewModel 内には、次の 2 つの関数があります。
詳細は省きますが、このコマンドを呼び出すことができるシナリオは 3 つあります。
- アプリケーションのメイン ウィンドウ内の DockableContent として
- DockableContent を含む新しい Window コントロールとして
- AvalonDock を介してウィンドウを「切り離す」ことによって作成された FloatingWindow として
シナリオ #1 と #2 は、次のコマンド バインディングを使用して完全に機能します。
ただし、AvalonDock ウィンドウを「切り離す」と、ボタンが灰色になります。ただし、スタック トレースは、CanExecute() が呼び出され、そのボタンに対して true を返すことを示しましたが、ボタンは無効のままでした。
silverlight - リンクされた複合クラスを持つ MVVM プロパティと CanExecute Relay コマンドが機能しない
C# ライブラリ クラスにエンティティ クラスがあり、Silverlight クラス ライブラリにリンクされています (エンティティは、他のシステムとのレガシー互換性のために C# クラスである必要があります)
例 (C# ライブラリ):
このクラスは、Silverlight クラス ライブラリにリンクされています。
MVVMにはプロパティがあります
プロパティが XAML のコントロールにバインドされている
TestClassのTestValueに依存するRelayCommands CanExecuteでボタンを制御したい...
ただし、TestValue が変更された場合 (空の文字列とは異なります)、PressCommand CanExecute は変更に気付かないようで、有効になっていないため、使用できません...
この種のset-tuでCanExecuteを使用することは可能ですか
wpf - コマンドでの継続的なCanExecute呼び出しのパフォーマンスの低下
MVVMパターンをプロジェクトに適用しています。ViewModelによって公開されたコマンドにバインドされたボタンを持つUserControlがあります。ボタンが表示されているため、ボタンのCanExecuteメソッドを継続的に呼び出しています。これにはパフォーマンスの低下が伴うとのことですが、よくわかりません。これは予想される動作ですか?または、ボタンをコマンドにバインドするためのより良い方法はありますか?
ありがとうございました。
wpf - canExecute 述語に条件をもう 1 つ追加できますか?
WPF MVVM アプリケーションで Josh Smith の RelayCommand を使用しています。
ビューモデルがあります。その中に別の ViewModel への参照があります。
子 ViewModel には、ICommand 型のプロパティがあります。
親の ViewModel で、「CanExecute」述語に条件をもう 1 つ追加できますか?
wpf - CanExecuteChanged の目的は何ですか?
CanExecuteChanged を使用して「実行可能」条件を変更できますか?
それとも... 「何のために」使用されますか?
wpf - ICommandを使用するボタンは無効になりませんか?
wpf-mvvmアプリケーションにボタンコントロールがあります。
プロパティ(viewmodelで定義)を使用してICommand
、ボタンクリックイベントをviewmodelにバインドします。
->実行と実装canexecute
用のパラメーターがありますICommand
(RelayCommand
)。
偽の場合でもCanExecute
...ボタンが無効になっていない...ボタンの内容が画像の場合
ただし、ボタンの内容がテキストの場合、有効化/無効化は正常に機能します。
mvvm - CanExecute と CanExecuteChanged、これらを RelayCommand で実装する必要がありますか?
私はMVVM-Lightを使用しており、リレーコマンドが完全に機能しています。実装する必要があることを読みCanExecuteChanged
ましたCanExecute
. 私は良い例を見つけることができませんが。
これらを実装する方法の良い例はありますか。
CanExecute は、実行できない場合に False を返す必要がありますが、ボタンを無効にするだけではありませんか??
いつ実行しCanExecuteChanged
ますか?
それぞれをいつ使用するかの良い例は誰にもありますが、私のコードはなくても機能しますが、このブログ投稿では、これらの項目を実装する必要があると述べています。
Enabled
ボタンや同様のコントロールを無効にできるように、プロパティまたは何かをViewModelのプロパティにバインドするだけだと思っていたので、少し混乱していますか?
理解の助けがあれば、本当に感謝しています。
編集
これは私が今持っているものです...動作していますが、ボタンが物理的に無効になっておらず、falseを返しているためコマンドが実行されません。RaiseCanExecuteChanged を強制的に実行するために、コンストラクターで CanExecuteMe を呼び出しています ...
これは、ビューモデルのコンストラクターで実行されます
これが私のコードの残りの部分です。例から取ったものです。
そして、ここに私のXAMLがあります
.net - スレッド化されたタスクと競合するコマンド CanExecute ハンドラ
より集中的で反復的なタスクを高速化するために、いくつかの並列プログラミングを WPF アプリに導入し始めました。実行時間と知覚される UI 応答に顕著な違いが見られるという点で、順調に進んでいます。
私は明らかに、UI スレッドとこれらのタスク スレッドから関連データへの同時アクセスがないように注意を払いました。
しかし - 時々 (常にではありません)、プログラムがクラッシュし、コマンドの CanExecute ハンドラーが並列タスクで処理されている同じデータにアクセスしようとしていることがわかります。または、逆に、データが CanExecute ハンドラーによって既に使用されているため、並列タスクが失敗します。
この問題を整理するための推奨される方法はありますか? CanExecute チェックをオフにすることはできますか? すべての CanExecute メソッドにテストを追加する必要がありますか?
(ちなみに、この問題を見て、私は CanExecute ハンドラーが呼び出される頻度に非常に驚いています! 私の一部は、パフォーマンス上の理由から、コマンドを手動で有効化および無効化する価値があると考えていますが、確かにそれはWPF が私たちにとってより簡単にしようとしている、単純なタスクのようなものです!)
c# - WPF MVVM CanExecute メソッドの実装の問題
WPF MVVM アプリケーションを実装しようとしています。そして、私はこのプラットフォームの初心者です。必要なのは、SaveCommand の CanExecute メソッドを実装することだけです
ここにコードがあります
WPF XML コード
C# ViewModel コード
CanSaveExcute がなければ正常に動作します。CanSaveExcute を設定した後、ボタンは無効のままになり、テキストの変更時に有効になりません。私が学んだ限りでは、これが進むべき道です。
私が間違っていることを教えてください。
ありがとう