1

私のフォームにはチェックボックスがあり、モデルのブール値に双方向でバインドされています。ユーザーがチェックボックスをクリックすると、質問が表示され、「いいえ」と答える特別なケースがあります。この場合、アクションは失敗し、チェックボックスはチェックされません。

これのいくつかのバリエーションを試してみましたが、モデルが正しく false に設定されているという意味では機能しませんが、UI のチェックボックスはとにかくチェックされます。

private bool _isName = false;
public bool isName {
  get { return _isName; }
  set {
    if (value && specialCase) {
        if(user answers no)
          value = false;
    }
    _isName = value;
    NotifyPropertyChanged("isName");
  }
}

これどうやってするの?

4

2 に答える 2

0

パラメータキャンセルコマンドとして取得するカスタムMessageBoxと、ユーザー入力が正の場合に呼び出すコマンドを作成します。ViewModel次に、プロパティの変更を担当する2つの追加メソッドを作成しisNameます。カスタムMessageBoxを表示するクリックイベントに追加xamlEventTriggerます。CheckBox次に、プロパティをMessageBoxに変更するコマンドをバインドします。

いくつかのコードサンプルまたはより明確な説明が必要な場合は、それらを提供します。

于 2012-05-30T09:09:51.120 に答える
0

そのことに関する直接的な問題を解決するだけでOKです。これは機能します:

...
if(user answers no) {
  value = false;
  myUiElement.Dispatcher.BeginInvoke(
              () => { isName = false; }
  };
}
...

ただし、@HiTech Magic が示唆したように、この露骨な行為は健全なソフトウェアの原則に違反しているため、より巧妙な方法で違反することにしました。

于 2012-05-30T09:45:07.407 に答える