我的表单中有一个复选框,它在我的模型中以两种方式绑定到布尔值。有一种特殊情况,用户点击复选框,会出现一个问题,并可能回答“否”。在这种情况下,操作失败,并且不应选中复选框。
我尝试了几种变体,但是在模型被正确设置为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");
}
}
我该怎么做?
答案 0 :(得分:0)
创建自定义MessageBox
,它将作为参数取消命令和命令获取,以便在用户输入为正时调用。然后为ViewModel
创建另外两个方法,这些方法将负责更改isName
属性。在xaml
上添加EventTrigger
到CheckBox
的Click事件,其中显示自定义MessageBox。然后绑定负责将属性更改为MessageBox的命令。
如果您需要一些代码示例或更多说明 - 我会提供它们。
答案 1 :(得分:0)
好的只是解决这个问题的直接问题,这有效:
...
if(user answers no) {
value = false;
myUiElement.Dispatcher.BeginInvoke(
() => { isName = false; }
};
}
...
然而正如@HiTech Magic建议的那样,这个blatanlty违反了理智的软件原则,所以我采取了更微妙的方式来违反它们。