問題タブ [delegatecommand]
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 - DelegateCommand と RoutedCommand およびジェスチャ - WPF
複合 WPF アプリを構築するときに DelegateCommand がジェスチャをサポートする方法はありますか? MenuItem と Button で使用されるコマンドを作成しようとしています。これは、キーボード ショートカットからアクセスできますが、別のアセンブリのクラス内にあります。
RoutedCommand を使用できますが、コード ビハインドを最小限に抑えたいと考えています。
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 が見つからないのはなぜですか? それは私を怒らせています-私は明らかに単純な非常に間違ったことをしています...
どうもありがとう。
wpf - 複合コマンドが機能しない
私はCompositeMVVMアプリケーションに取り組んでおり、グローバルバインディングイベントを発生させようとしています-そうでない場合を除きます!..
CanRunはtrueを返しますが、ボタンはデフォルトで無効になっています!! !! コンポジットガイドに従いましたが、OnLoadMenuが起動していません!!!
私は輪になって回っています(イベントアグリゲーター、DelegateCommands、CompositeCommands)それはうまくいきません。これを見て、私が欠けているものを教えてもらえますか?
unit-testing - DelegateCommand を単体テストするにはどうすればよいですか
ViewModel と SaveItem(save, CanSave) デリゲート コマンドを単体テストしようとしています。CanSave が呼び出され、特定の条件で正しい値が返されるようにしたいと考えています。基本的に、単体テストからデリゲート コマンドを呼び出すにはどうすればよいですか。実際には、統合テストに近いものです。明らかに、CanSave メソッドの戻り値をテストすることもできますが、文字に BDD を使用しようとしています。最初にテストなしではコードはありません。
c# - DelegateCommand による WPF アプリのメモリ リーク
MVVM パターンを使用して、WPF と c# で記述されたデスクトップ アプリを完成させました。このアプリでは、デリゲート コマンドの実装を使用して、ModelView で公開されている ICommands プロパティをラップしました。問題は、これらの DelegateCommands が、ビューを閉じた後に ModelView と View がガベージ コレクションされるのを妨げていることです。したがって、アプリケーション全体を終了するまで、それは鳴き続けます。モデルビューをメモリに保持するデリゲートコマンドがすべてであることがわかったアプリケーションのプロファイルを作成します。どうすればこの状況を回避できますか?これは mvvm パターンの性質によるものですか、それともパターンの移植に関するものですか? ありがとう。
編集:これは小さいですが、MVVMパターンを実装する方法の完全な部分です
最初: CommandDelegte クラス
2番目: ModelView クラス
3 番目: ウィンドウ コード ビハインド
4: 私の XAML
c# - WPF MVVM ViewModel で RelayCommand/DelegateCommand を簡素化する
MVVM を実行してコマンドを使用している場合、 MSDNの元の MVVM 記事の次の例のように、プライベート RelayCommand フィールドまたは DelegateCommand フィールドによってサポートされている ViewModel の ICommand プロパティがよく表示されます。
ただし、これは非常に煩雑で、新しいコマンドを設定するのはかなり面倒です (私は、このような入力をためらうベテランの WinForms 開発者と一緒に仕事をしています)。だから私はそれを単純化したいと思って、少し掘り下げました。get{} ブロックの最初の行にブレークポイントを設定すると、アプリが最初にロードされたときにのみヒットすることがわかりました。後で、必要な数のコマンドを起動できますが、このブレークポイントはヒットしません。これを単純化して、ViewModel から混乱を取り除きたいと考えていたところ、次のコードが同じように機能することに気付きました。
ただし、C# やガベージ コレクターについては、これが問題を引き起こす可能性があるかどうか (場合によっては過剰なガベージが生成されるなど) を知るには十分ではありません。これは何か問題を引き起こしますか?
c# - DelegateCommandはどの名前空間にありますか?
「.NETドメイン駆動設計とC#」の例を作成しようとしています。この例には、タイプのいくつかの属性が宣言されているのを確認できるコード例が含まれていますDelegateCommand
。
今、私はそれをグーグルで検索しようとしましたが、MSDNのどこにもその参照が見つかりません(実際には、この記事は見つかりましたが、DelegateCommand
の記事自体は見つかりませんでした)。
何かDelegateCommand
がその一部なのWPF
か、それとも本の中で作成されたものなのか?
それがWPF(または他のMS製品)の一部である場合、それはどのアセンブリ/名前空間にありますか?
wpf - ウィンドウがwpfにロードされたときにコマンドを起動する方法
ウィンドウがロードされたことを通知するコマンドを起動することは可能ですか。また、MVVM フレームワーク (フレームワークという意味では、Caliburn、Onxy、MVVM Toolkit など) は使用していません。
wpf - UI がコマンドから切り離されるのはいつですか?
私は本当にこれで頭を悩ませています。ダイアログを開くメインウィンドウがあります。ダイアログが閉じた後、ダイアログにバインドされたコマンドの CanExecute メソッドは引き続き実行されます。これにより、アプリケーションで重大な問題が発生しています。
例:
MainWindow には、クリック ハンドラを持つボタンがあります。これはクリック イベント ハンドラです。
ダイアログでは、項目コントロールをダイアログ ウィンドウの静的リソースにバインドします。リスト内の各項目にはコマンドがあります。
これはビューモデルです:
そして、これは DelegateCommand の実装です:
ここで、ダイアログ ウィンドウを閉じて、viewmodel の CanExecute メソッド (弱いイベント サブスクリプションで Prism DelegateCommand を使用しています) にブレークポイントを設定すると、ダイアログが閉じられていてもトリガーされることに気付きます。ダイアログのボタンとViewModelのコマンドの間のバインディングがまだ生きているのはなぜですか?
そして、ウィンドウを閉じて実行されているかどうかを確認し、後でビューモデルの「CanClickMe」メソッドにブレークポイントを設定しています。しばらく実行された後、突然停止します (おそらく GC が原因です)。実際のアプリケーションではビューモデルが既に破棄されている可能性があるため、この非決定論的な動作が問題を引き起こしています。
wpf - WPFとMVVMの問題
WPFアプリで最初のMVVMを実装してみてください。WinFormsに基づく古いアプリがあり、このプロジェクトのロジック(クラス)を使用したいと思います。
私はモデルを持っています、それはこれらのクラスで構成されています:
また、サーバーでHTTP GETおよびPOSTリクエストを送信するサービスクラス、このクラスは次のインターフェイスを実装します。
WPF Model-View-ViewModelToolkit0.1のDelegateCommandを使用してみます。
ビューで問題があります。しかし、私の問題は、ViewModelのクラスPokecServiceのメソッドをどのように「ラップ」するかです。
LogOnメソッドの例。
まず、ビューを作成します。
StartUpWindow.xaml
2つのtexboxと1つのボタンのみで構成されています。ViewModelのプロパティでボタンをコンマでバインドします。
VieModel StartUpViewModel.cs
このクラスでは、DelegateCommandのクラスPokecServiceのラップメソッドが必要です。これらはUIコントロールにバインドされます。
私の質問は次のとおりです。
ViewModelのプロパティのビューからUIコントロールをバインドできますが、問題ありません。DelegateCommadを使用してViewModelのクラスPokecServiceのメソッドを「ラップ」するのは良い方法ですか?
ViewModelで新しいウィンドウ/ビューを作成するのは良いことですか?ViewModelで実際のView(Window)を閉じるにはどうすればよいですか?
この問題に最も適した解決策は何ですか?
メソッドをDelegateCommand変数でラップし、これらの変数プロパティを作成するだけで、このプロパティはUIコントロールにバインドされると思いますが、MVVMの初心者です。私はいくつかの記事を読みましたが、それらは非常に単純なデモしか示していません。
よろしくお願いします。英語でごめんなさい。