問題タブ [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.
c# - MVVM でのイベント処理
MVVM では、モデルには通常データ モデルがあり、ビューはプロパティ VM にさらにバインドされる UI (XAML) であり、通常は INotifyPropertyChanged を継承する ViewModel です。
イベント処理に関して、UI ですべてのイベントを処理するための特定のパターンはありますか? 例:保存/新規/閉じるボタンまたはその他のボタンがある場合...そして、ユーザーが何らかの操作を行い、ボタンのいずれかをクリックしたときに、コントロールがコードビハインドに移動し、目的の操作を実行する必要があるとします。 .. イベント処理が適切に行われたことを確認するにはどうすればよいですか? どのインターフェイスを使用する必要がありますか / いつ、どのように使用しますか?
ICommandインターフェイス/リレーコマンド/デリゲートコマンドがあるように...私はこれについて明確ではありません..
私の質問へのあなたの応答を前もって感謝します...
wpf - WPF DelegateCommand RaiseCanExecute
ただし、自動 RaiseCanExecuteChanged は正しく機能しません。CommandManagerHelper を使用するのは良いことですか (アプリケーションがフォーカスされるたびに、すべてのコマンドに対して canexecute changed を発生させますか? または、standart RelayCommand を使用して自分で canexecutechanged を発生させる必要がありますか?
ありがとう
wpf - 行 WPF をダブルクリックすると、2 番目の DataGrid にデータが入力されます
私はまだwpfとMVVMに少し慣れていません。そのパターンを壊さずに解決策をコーディングしようとしています。私は 2 つ (まあ 3 つですが、この質問の範囲では 2 つだけ) を持っていDataGrid
ます。1 つの行をダブルクリックし、そのデータを 2 番目の行にロードしますDataGrid
(理想的には、データをロードする 2 番目のスレッドをスピンアップします)。これまでのところ、行をダブルクリックするとウィンドウがポップアップ表示されます。イベントのコードを xaml の分離コードに挿入します。私には、それは非常に窓のように思えます。どういうわけか、私はそれがパターンを大きく壊しているように感じます。
これはコード ビハインドのイベントのコードで、xaml のグリッド定義は次のとおりです。
このコードは MainWindowViewModel に入れる必要があると考えています。だから私はコマンドを作成しようとしています:
および同じイベント ハンドラー:
しかし、ICommand
は を返すときに例外をスローしていますDelegateCommand(OnDoubleClickPopRow)
。
ええと、引数の数が一致していないことは明らかです。何か間違ったことをしていることはわかっていますが、それが何であるかはよくわかりません。これについては引き続き調査しますが、皆様のご協力をいただければ幸いです。
wpf - WPF & MVVM: テキスト ボックスから値を取得して ViewModel に送信する
ボタンを押すと、2 つの Texbox の値を取得しようとしています (ログイン ウィンドウをシミュレートしています)。ボタンに割り当てられたコマンドは正しく起動しますが、「ログイン」を行うためのテキストボックスの値を取得する方法がわかりません。
これは私のビューモデルです:
これはビューです:
誰かが助けてくれたら...私は無限に感謝します.
c# - WPF MVVMのDeleagteコマンドから呼び出される関数でパラメータのオブジェクト型を渡す
次の関数が WPF MVVM のパラメータのオブジェクト型を取るのはなぜですか?
デフォルトでは、NULL が渡されるため、関数のパラメーターとして何も渡しません。
何も渡したくない場合は、関数からパラメーターを削除することをお勧めします。しかし、それは許されません。なんで?
c# - DelegateCommand別のCanSee関数でCanExecute を除く
各項目にヘッダー、コマンドがあり、コマンドを実行できるコンテキストメニュー項目のコレクションを作成し、「canExecute」のような機能であるが他の条件を持つ可視性のための新しい機能を追加したいと考えています。
行を押しているときDataGrid
に、コンテキスト メニュー項目 source( ) にバインドされたコレクション コンテキスト メニュー項目を持つ新しいコンテキスト メニューを作成したいと考えていますItemContainerStyle
。各メニュー項目で 2 つの機能を実行したい:
CanExecute
- アイテムの無効化/有効化CanSee
- コンテキスト メニュー項目がアイテムに関連していない場合に、コンテキスト メニュー項目の可視性を変更するため。
それを行う最良の方法は何ですか?
c# - ICommandSource と DelegateCommand
いくつかのコマンドでユーザーコントロールを作成しようとしています。ここに示すアプローチを使用して xaml でコマンドを接続するとhttp://msdn.microsoft.com/en-us/library/vstudio/ms771361(v=vs.90).aspx動作しますが、DelegateCommand を使用するとPrism ライブラリ CanExecuteChanged がユーザー コントロールで起動せず、その理由がわかりません。申し訳ありませんが、これは多くのコードです。Execute は正しく起動しますが、CanExecute は起動しません。
前もって感謝します。
カスタム コントロール Xaml
カスタム コントロール コード ビハインド
窓
c# - 委任されたコマンドは機能したくない
それはまた長いコーディングの日であり、私はおそらく何かを見過ごしています。しかし、私は逃したものを理解することはできません
ViewModel の C# コード
Xaml コード:
そのため、MainWindow テキスト ボックスは、C# コンストラクターで設定したものから表示されているので、データ コンテキストが正常に機能していることがわかります。ボタンをクリックしたときに委任されたコマンドを起動できない理由がわかりません。
私はこれがおそらく本当にばかげていることを知っています。それは単純なことですが、この画面を50分間見つめていて、エラーを探しすぎています。特に私がこれを100回行ったとき、それは私のソリューション全体の他のコントロールにあります
みんなありがとう。
c# - モデルが変更されたときに CanExecuteChanged を発生させる
私のViewModel
中には、ObservableCollection
(Person
を実装するINotifyPropertyChanged
)オブジェクトとSelectedPerson
プロパティがあります。これらは私のビューで ListBox にバインドされています。
ViewModel には次の Prism DelegateCommand もあります。
が変更され、年齢が変更SelectedPerson
されるたびに MyCommand.RaiseCanExecuteChanged を呼び出す最もエレガントな方法は何ですか?SelectedPerson
のセッターでプロパティが変更されたハンドラーを追加および削除するSelectedPerson
のは、私には少し面倒です。