取消复选框检查事件

时间:2012-05-30 08:44:04

标签: silverlight

我的表单中有一个复选框,它在我的模型中以两种方式绑定到布尔值。有一种特殊情况,用户点击复选框,会出现一个问题,并可能回答“否”。在这种情况下,操作失败,并且不应选中复选框。

我尝试了几种变体,但是在模型被正确设置为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");
  }
}

我该怎么做?

2 个答案:

答案 0 :(得分:0)

创建自定义MessageBox,它将作为参数取消命令和命令获取,以便在用户输入为正时调用。然后为ViewModel创建另外两个方法,这些方法将负责更改isName属性。在xaml上添加EventTriggerCheckBox的Click事件,其中显示自定义MessageBox。然后绑定负责将属性更改为MessageBox的命令。

如果您需要一些代码示例或更多说明 - 我会提供它们。

答案 1 :(得分:0)

好的只是解决这个问题的直接问题,这有效:

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

然而正如@HiTech Magic建议的那样,这个blatanlty违反了理智的软件原则,所以我采取了更微妙的方式来违反它们。