問題タブ [commandbinding]
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.
.net - WPF - CommandBindings を介してコマンドに強制的に「CanExecute」を再評価させる方法
階層内のMenu
それぞれに、定義した に設定されたプロパティがあります。associatedは、各 の有効な状態を制御する評価用のコールバックを提供します。MenuItem
Command
RoutedCommand
CommandBinding
CanExecute
MenuItem
これはほとんど機能します。メニュー項目は、最初は正しい有効状態と無効状態で表示されます。ただし、CanExecute
コールバックが使用するデータが変更された場合、この新しい状態が UI に反映されるようにするには、コールバックから結果を再リクエストするコマンドが必要です。
RoutedCommand
これに関する、またはこれに対するパブリックメソッドはないようCommandBinding
です。
コントロールをクリックまたは入力すると、コールバックが再び使用されることに注意してください(マウスオーバーでは更新されないため、入力時にトリガーされると思います)。
wpf - WPF コマンド/コマンド バインディングに基づくコントロールの無効化
コマンドを実行できない場合、WPF はコマンドのソース (通常はボタン) を自動的に無効にするため、コマンドを使用すると便利です。
明らかに、この機能は、コマンド ソースではないコントロールでは使用できませんListBox
。
コマンド以外のソース管理でこの機能を有効にする最良の方法は何ですか? 私はいくつかの解決策を考えました:
ListBox
を aで囲み、ボタンの をクロムがないようにButton
変更します。ControlTemplate
- 非表示の を作成し、のプロパティをのプロパティに
Button
バインドします。IsEnabled
ListBox
IsEnabled
Button
ListBox
そのimplementsの子孫を作成しますICommandSource
。
もっとエレガントな方法はありますか?
c# - WPF コマンド バインディングのテストを作成するにはどうすればよいですか?
「コマンド」クラスがあります:
MainWindow.xaml.cs の分離コード:
また、メニュー バーを実装するユーザー コントロール内の XAML は次のとおりです。
コードは機能します。全体的なパターンが気に入っているので、使い続けたいと思っています。
ただし、テスト駆動開発を行い、単体テストと統合テストで 100% のカバレッジを達成するなど、他の目標も追求しようとしています。また、StyleCop と FxCop の警告に 100% 準拠したいと考えています。そして、私はここで捕まっています。
FxCop (Microsoft.Security:CA2109) で推奨されているように、私のMainWindow.Exit()
メソッドは非公開ですが、これはテストから直接呼び出すことができないことを意味します。公開して FxCop メッセージを非表示にできると思います。または、アクセサーを使用できます。しかし、私はプライベート メソッドに対して直接テストを書くことに偏見を持っています。特にこの場合は、コマンド バインディング自体ではなく、メソッドをテストするだけなので。
コマンドが意図したとおりに機能することを確認できるように、テストコードからコマンドを呼び出す他の方法が必要だと感じています(手動でテストする以外に)。助言がありますか?
wpf - MVVM での CommandParameter 値の受信
次のようにコマンドをバインドしています。
ここでは、その CommandParameter プロパティもバインドします。次に、NextCommand からその値をフェッチする方法を説明します。
その関数定義:
CommandParameter値を取得するには?
前もって感謝します。
c# - WPF:Enterボタンを押したときに、検索フィールドでコマンドバインディングを実行します
WPFアプリに、コマンドバインディングを含む検索ボタンを含む検索フィールドがあります。これはうまく機能しますが、キーボードのEnterキーを押したときに、テキストフィールドに同じコマンドバインディングを使用するにはどうすればよいですか?私が見た例はすべて、KeyDownイベントハンドラーでコードビハインドを使用しています。これをxamlとコマンドバインディングでのみ機能させるスマートな方法はありますか?
wpf - コマンドバインディングを使用してビューからビューモデルにデータを送信する
質問: コマンド バインディングを使用する場合、ビュー モデルにデータを送信するにはどうすればよいですか? たとえば、ボタンをクリックすると、リストの「現在選択されているインデックス」が送信され、リストのその項目に対して操作を実行できるようになります
詳細情報: 私は貨物のリストを持っているプログラムに取り組んでおり、各貨物にはパレットのリストがあります。現在選択されている貨物に新しいパレットを追加できるボタンを作成したいと考えています。>編集> そして、もう 1 つの作業を進めると、各パレットには製品のリストが表示されます。そのため、自分がどの貨物に乗っているかを知る必要があるだけでなく、どの貨物のどのパレットに乗っているかも知る必要があります。
コマンド バインディングを行うとき、ViewModel にデータを送信する方法がわかりません。この純粋な MVVM を保持したいので、ViewModel でビューをチェックしたくありません。
~N
編集: 11/04/09 - ViewModel のインスタンス化に関する質問のセクションを削除しました。これは他の質問を解決するために順調に進んでいるので、別の質問でもう一度尋ねます。そして、私が望む方向に明確にするために、質問にいくつかの編集を加えました。また、いくつかの文法的なビットを変更して、1 つしかない場合に 2 つの質問について話さないようにしました。
wpf - WPF ToggleButton と DelegateCommand
ToggleButton
a が sを介してチェックされているかどうかを判断する方法はありDelegateCommand
ますか?
ティア、マイク
以下の XAML コード。コレクションを使用ItemsControl
してバインドしています。私は基本的に、クリックされたときに各ボタンのトグルステータスを取得する方法を望んでいます。
.net - TextBlock のコマンド バインディングを有効にする
私は WPF アプリケーションを開発しており、コマンド バインディングを使用してクリックしたときにコマンドをトリガーしたい TextBlock を持っています。これを達成するための最良の方法は何ですか?
TextBlock-control には Command プロパティはありませんが、CommandManager はあります。これは何ですか?コマンドバインディングに使用できますか? このプロパティで他の多くのコントロールも見てきました..
私が監視した使用可能なコントロールはありますか? たとえば、ボタンを使用して、ボタンのように見えないようにスタイルを設定することをお勧めしますか?
TextBlock をラップできる Command バインディングをサポートするコントロールはありますか?
基本的に TextBlock であるカスタム コントロールを作成する必要がありますが、追加のプロパティ Command および CommandArgument を使用して、たとえば MouseLeftButtonDown プロパティでコマンド バインディングを有効にする必要があります。
c# - CommandBindingCtrl+スペースバー
RoutedUICommandを実装するRoutedCommandクラス内でコマンドを処理します。これは、CanExecuteと必要に応じてExecuteをチェックすることで、コマンドをブロックまたはオーバーライドするのに役立ちます。EditingCommand、ApplicationCommandなどをオーバーライドできます。処理すらできないコマンドの1つは、Ctr+Spacebarです。それはMediaCommandまたは私が見つけることができない他のいくつかのタイプですか?どこかで取り扱われていると思いますので、コントロールできません。
.net - CommandBinding の CanExecute のデバッグ
Button
にバインドされたユーザー コントロールがありますNavigationCommands.RefreshCommand
。コマンドのハンドラーは、親コントロールにあります。ハンドラーは次のCanExecute
ようになります。
何らかの理由でButton
、ウィンドウをクリックするまで無効のままになります。
をクリックしButton
て実行すると(IsConnecting
一時的にtrueに設定されます)、ボタンは正しく無効になりますが、ウィンドウで別のイベント(クリックなど)が発生するまでボタンは有効になりません。
ボタンにバインドされているコマンドの CanExecute ハンドラーをデバッグするために使用できるツールやトリックはありますか?