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然后创建两个负责更改isName属性的附加方法。xaml添加到单击事件中,其中显示自定义消息框EventTriggerCheckBox然后将负责更改属性的命令绑定到 MessageBox。

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

于 2012-05-30T09:09:51.120 回答
0

好的,只是为了解决那个东西的直接问题,这行得通:

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

然而,正如@HiTech Magic 所建议的那样,这种公然违反了健全的软件原则,所以我转向了一种更微妙的方式来违反它们。

于 2012-05-30T09:45:07.407 回答