WPFコマンドのリフレッシュ
質問
誰か
CanExecute
をカスタムコマンドで呼び出す方法を知っている人はいますか?
RelayCommand
)?
典型的なのは
CanExecute
は UI 上でインタラクションが発生するたびに呼び出されます。何かをクリックすると、コマンドが更新されます。
の条件が
CanExecute
の条件が、裏でタイマーによってオン/オフされている状況があります。これはユーザーのインタラクションによって駆動されていないため
CanExecute
は、ユーザーが UI と対話するまで呼び出されません。その結果、私の
Button
は、ユーザーがクリックするまで有効/無効のままです。クリックされた後は、正しく更新されます。時々
Button
が有効に表示されても、ユーザがクリックすると発火せずに無効に変化する。
タイマがCanExecute
? 私は
PropertyChanged
(
INotifyPropertyChanged
) に影響するプロパティで
CanExecute
を追加しましたが、それは役に立ちませんでした。
XAMLの例です。
<Button Content="Button" Command="{Binding Cmd}"/>
後ろのコード例
private ICommand m_cmd;
public ICommand Cmd
{
if (m_cmd == null)
m_cmd = new RelayCommand(
(param) => Process(),
(param) => EnableButton);
return m_cmd;
}
// Gets updated from a timer (not direct user interaction)
public bool EnableButton { get; set; }
どのように解決するのですか?
呼び出し
System.Windows.Input.CommandManager.InvalidateRequerySuggested()
を呼び出すと、CommandManagerはRequerySuggestedイベントを発生するように強制します。
備考 CommandManagerは、キーボードフォーカスの変化など、コマンドのターゲットが変化したときの判断において、特定の条件のみに注目します。CommandManagerがコマンドを実行できない原因となる条件の変化を十分に判断しない状況では、InvalidateRequerySuggestedを呼び出して、CommandManagerにRequerySuggestedイベントを発生させることができます。
関連
-
[解決済み] レンダリング時間やパフォーマンスの面で最も効率的なパネルはどのような順番になりますか?
-
[解決済み] WPFのスライダーを整数の位置にのみスナップさせる方法とは?
-
[解決済み] マルチバインディングで1バインディングの定数値を渡すには?
-
[解決済み] WPF標準のタブコントロールに選択されたタブが変更されたイベントはありますか?
-
[解決済み] ConverterParameterに整数を渡すには?
-
[解決済み] グリッドの行と列の位置をプログラムで設定する方法
-
[解決済み] WPFのTextBlock要素とLabelコントロールの違いは何ですか?重複
-
[解決済み] ListBoxに垂直スクロールバーを表示させるには?
-
[解決済み] WPFのCanExecuteを最初に呼び出すとCommandParameterがNULLになる。
-
[解決済み] WPF-ラベルの改行?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 静的プロパティへのバインディング
-
[解決済み] Generic.xamlの特徴とは?
-
[解決済み] WPF: スクロールバー付きItemsControl (ScrollViewer)
-
[解決済み] WPF - CommandBindingsを使用してCanExecuteの再評価を強制する方法
-
[解決済み] ItemsControlの仮想化?
-
[解決済み] TwoWayまたはOneWayToSourceバインディングは、読み取り専用プロパティでは機能しません。
-
[解決済み] WPF: プログラムでテキストボックスからフォーカスを外す方法
-
[解決済み] JavaFXはWPFと比較してどうですか?[クローズド]
-
[解決済み] WPF ListBoxでTextBlockを強制的に折り返す
-
[解決済み] すべてのコントロールをターゲットにする方法 (WPF Styles)