問題タブ [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.
wpf - CommandManager.InvalidateRequerySuggested() が機能しない
wpf アプリの起動時にコマンドのCanExecuteメソッドを 1 回だけ呼び出します。その方法を定期的に再評価できるようにしたい。プログラムまたはDispatcherTimerを使用してCommandManager.InvalidateRequerySuggested()を呼び出すことへの言及をいくつか見つけました。どちらも機能せず、CanExecute はアプリの有効期間ごとに 1 回だけ呼び出されます。
誰でも修正を知っていますか?
-ポン-
mvvm - MVVM アプローチでの ICommand/RelayCommand の簡素化
私は、自分が作成するアプリケーションをよりシンプルにするように努力しており、そのためにいくつかの手順を実行しましたが、私に固有のものとはまったく思えない興味深い問題が残っています。私は何が間違っているのだろうかと思っています。
モデル オブジェクトのコレクションを保持する ViewModel があります。ビューは、コレクション内のすべてのオブジェクトを表示する ListView です。モデル オブジェクトには、それらを操作するためのすべてのロジックが含まれています。各項目の ListView 行内にボタンがあり、そのボタンを配線してモデル オブジェクトのメソッドを呼び出す必要があります。
これを機能させるには、コマンド バインディングを追加する必要がありますが、親ウィンドウのデータ コンテキストに行のモデル オブジェクトのパラメーターを渡す必要があります。これにより、モデル オブジェクトを ViewModel (親ウィンドウのデータ コンテキスト) 内で使用できるようになります。 ) 渡されたモデル オブジェクトのメソッドを呼び出します。
これは、実際には必要以上に複雑に思えます。私はすでに行ったことをすべて捨てても構わないと思っています。神聖な牛はありません。1 年後に振り返って自分が何をしていたかを簡単に把握できる、より単純な方法でこれを行いたいだけです。
c# - MVVMは、他のViewModelからViewModelでコマンドを実行します
私は単純なタスクで約 14 日間苦労しています。データベースには、ハードウェア カテゴリの定義があります。例えば :
- HDD
- 内部
- 外部の
- 閃光
このリストは、次のように定義されたデータベースにあります。
Entity Framework を介して、これらの行をアプリケーションに取り込みます。このフラットなデータから、DataModel である構造化オブジェクトを作成します。このモデルは次のように定義されます。
ここで、これらから、TreeView をバインドするSubCategoryViewModelという ViewModel を作成します。そのため、ツリービューでカテゴリを表示し、定義および維持された階層を使用できます。これはうまくいきます。SubCategoryViewModel では、 TreeView にもバインドされているMouseDoubleClick の Attached Behavior を介してCommandが定義されています。したがって、ユーザーがアイテムをダブルクリックすると、SubViewCategoryModelで定義されたメソッドが特定のコードを実行します。SubCategoryViewModelのリストは HWDocumentViewModelにネストされていますこれは私のウィンドウのメイン ViewModel です。今必要なことは明らかです。ユーザーが TreeView のアイテムをダブルクリックすると、データベースからアイテムをロードして ListView に表示する必要があります。私の意見では、HWDocumentViewModelではアイテムのコレクションを定義し、ListView で選択したカテゴリに応じてそれらをロードする必要があります。しかし、 SubCategoryViewModel からHWDocumentViewModelでメソッドを実行する方法がわかりません。理由: TreeView はSubCategoryViewModelアイテムのリストにバインドされているため、DoubleClick が発生すると、SubCategoryViewModelのメソッドが実行されます。メインViewModel(HWDocumentViewModel)でメソッドを実行する方法を探しています。
私はこのアプローチを試みました:
私はプロパティを作成しました: public static SubCategoryViewModel SelectedCategory
on HWDocumentViewModel
. ダブルクリックが発生すると、SubCategoryViewModel からこのプロパティを として設定しますthis
。したがって、このプロパティには doubleclick イベント デリゲートを実行するオブジェクトがあります。これで、HWDocumentView モデルにユーザーが選択したオブジェクトができました。
そのため、アイテムを ListView にロードする必要があります。しかし、SubCategoryViewModelのメソッドからロードしますか? 私はそうは思わない。代わりに、ビューモデルを作成してメイン ビュー モデルからロードし、それを ListView にバインドする必要があります。しかし、どのように SubCategoryViewModel から HWDocumentViewModel のメソッドを呼び出すことができますか? SubCategoryViewModel からアクセスできる HWDocumentViewModel に静的メソッドを作成する必要がありますか?
または、 HWDocumentViewModel で定義された Command を SubCategoryViewModel から呼び出す方法はありますか?
または、一般的に、WPF で Warehouse のようなアプリケーションを作成するために正しいアプローチを取りましたか?
どうもありがとう。
編集: TreeView の XAML は次のようになります。
wpf - メソッドをHoverButtonにバインドする方法は?
私は何時間も探していましたが、役に立つものが見つかりません。助けていただければ幸いです。
Coding4FunツールキットとMVVMパターンでWPFを使用してKinectアプリケーションを作成しています。
kinect関連のすべてのロジックをViewModelに配置し、それらのメソッドをHoverButton(C4Fツールキットにあります)にバインドしたいと思います。通常のボタンには「Command」プロパティがありますが、HoverButtonにはありません。
つまり、要するに:
HoverButtonのクリックイベントをViewModelのメソッドにバインドしたいと思います。
私のXAML:
私のViewModel:
私のコードビハインド:
c# - Icommandを使用してwpfの2つのmenuItemを切り替えるにはどうすればよいですか?
同じコマンド「画像の表示」と「画像の非表示」にバインドされた2つのmenuItemがあり、いつでも1つのアイテムのみが表示されるか、表示または非表示になります。
Executeの構文は、パラメーターを除いて同じです。
同時に表示できるのは1つだけで、アイテムを押すともう1つに切り替わる可能性はありますか?
ありがとうございました
wpf - CommandTargetはどこにありますか?
私はまだコマンドとRoutedEventsで経験を積んでいます。RoutedCommandsを使わずに、とてもシンプルなプログラムを実現しようとしています。
これが私のコマンドクラスです:
そのコマンドに静的にアクセスできるようにするために、すべてのコマンドを保持するための静的クラスを作成しました。
これは、私のMainWindow.xamlにあるものです。
私が欲しいのは、menue1-itemをクリックすると、「mainTextBox」の背景が変わることです。それでは、私のMainWindow.csの内部を見てみましょう。
プログラムは機能していますが、正しくありません:)常にメインウィンドウの背景を変更しますが、コマンドターゲットの背景は変更しません。
だから-私は何が間違っているのですか?何か忘れましたか?
c# - CanExecuteメソッドでボタンを有効にする方法
MVVMを使用してWPFでアプリケーションを開発していますが、ICommandオブジェクトでスタックしています。
いくつかのボタンを含むウィンドウがあるので、以下のようにXAMLのそれぞれのICommandにバインドします。
次に、ビューモデルクラスで次のように記述しました。
したがって、ウィンドウを最初に開いたときにボタンを有効にしない必要があるため、変数isDoSomethingButtonEnabled
をに設定しましたfalse
。そして、それは機能し、ボタンは最初は無効になっていますが、私の問題は、実行時に変数isDoSomethingButtonEnabled
をに変更しても、ボタンがまだ無効になっていることです。true
isDoSomethingButtonEnabled
変数をに変更した後、いくつかのテストを実行しtrue
、の結果を出力するDoSomethingCommand.CanExecute()
と、「true」と表示されます。
では、ボタンを有効にするにはどうすればよいですか?
前もって感謝します
wpf - トンネリング コマンド
ListBox でインスタンス化されたユーザー コントロールがいくつかあります。Window に を発生させるボタンと、それを実行できるようにNavigationCommands.Refresh
するCanExecute
ハンドラがあります。
これらの動的に作成されたユーザー コントロール (ListBox の ItemTemplate 内で作成) のそれぞれに、NavigationCommands.Refresh
. ウィンドウ内のボタンをクリックすると、各ユーザー コントロールで設定したハンドラーが起動しませんか? 各 UC にトンネリングするコマンドが必要ですが、そうではありません。
windows-runtime - WinRT カスタム コントロール - タイプ IMvxCommand の DependencyProperty をバインドできませんでしたが、タイプが RelayCommand または ICommand に変更されたときにバインドできました
昨日の WP2W8 ロンドン イベントで、既存の WP7 カスタム コントロールを WinRT (5 月 31 日リリース候補版) に移植しようとしました。
このカスタム コントロールには、次のように宣言されたプロパティがありました。
何を試しても、これをバインドできませんでした-出力ウィンドウのデバッグバインディングエラーは、バインディングが型MvxRelayCommand
をに変換できないことを常に報告しましたIMvxCommand
ただし、IMvxCommand
toMvxRelayCommand
またはICommand
then を変更すると、バインディングは機能しました。
ここの継承ツリーはMvxRelayCommand
inherits from IMvxCommand
inherits fromでしSystem.Windows.Input.ICommand
たが、WinRT がICommand
バックグラウンドでファンキーなタイプのリダイレクトを行っているのではないかと思います。
WinRT カスタム コントロールで依存関係プロパティを使用できるかどうIMvxCommand
かについて、誰かが洞察を持っていますか?ICommand
更新 - サンプル プロジェクトは次のとおりです: https://github.com/slodge/WinRTInterfaceBindingProblem
c# - ICommand メソッドの実行パラメータ値
wpf の ICommand を理解しようとしています。
Event クラスでは、ICommand とそのメソッドを実装します。
1 つのメソッドは Execute です。
今私の質問です:parameter
からのパラメータを含む値は何Execute
ですか?