一个小问题.任何想法的人为什么这不起作用?
int? nullableIntVal = (this.Policy == null) ? null : 1;
Run Code Online (Sandbox Code Playgroud)
null如果左手表达式为True,我试图返回,否则1.看似简单,但给出了编译错误.
无法确定条件表达式的类型,因为null和之间没有隐式转换int.
如果我用任何有效的替换nullin ,那么没有问题.? null : 1int
我遵循Martin Fowler为Windows Forms项目中的GUI架构建议的演示模型设计模式.
" 表示模型的本质是一个完全自包含的类,它表示UI窗口的所有数据和行为,但没有任何用于在屏幕上呈现该UI的控件.一个视图然后只是预测状态将演示模型放到玻璃上......" - Martin Fowler
我发现这个概念非常流畅且易于理解,除了这一个数据将RadioButtons绑定到Data/Domain对象上的属性的问题.
假设我有一个带有三个单选按钮的Windows窗体,可以将某些"模式"选项描述为 -
如何在数据/域对象上使用布尔属性到DataBind到这些按钮?我尝试了很多方法但无济于事.例如,我想代码像 -
rbtnAutoMode.DataBindings.Add("Text", myBusinessObject, "IsAutoMode");
rbtnManualMode.DataBindings.Add("Text", myBusinessObject, "IsManualMode");
rbtnImportMode.DataBindings.Add("Text", myBusinessObject, "IsImportMode");
Run Code Online (Sandbox Code Playgroud)
数据/域对象上应该有第四个属性,如"SelectedMode",最后应该描述单个值,如"SelectedMode = Auto".我试图在任何"IsAutoMode","IsManualMode"或"IsImportMode"被更改时更新此属性,例如通过属性设置器.我在我的数据/域对象上实现了INotifyPropertyChanged,因此更新任何数据/域对象属性会自动更新我的UI控件,这不是问题.
在Stack Overflow问题中绑定两个单选按钮有一个很好的例子我如何使用数据绑定与Windows窗体单选按钮?,但是在使用三个按钮实现相同时我错过了链接.我对单选按钮的行为非常不稳定.
我希望我能够合理地解释它.我其实很匆忙,无法在帖子上提供详细的代码,但是对此方面的任何帮助表示赞赏.
通过公开如下方法,可以解决这个问题:
public void SetMode(Modes mode)
{
this._selectedMode = mode;
}
Run Code Online (Sandbox Code Playgroud)
可以从UI的单选按钮的"CheckedChanged"事件调用,并在业务对象上完美地设置"SelectedMode",但我需要扩展限制以验证是否可以通过DataBinding完成.