小编Raj*_*shi的帖子

如何使用Nullable Int的条件运算

一个小问题.任何想法的人为什么这不起作用?

int? nullableIntVal = (this.Policy == null) ? null : 1;
Run Code Online (Sandbox Code Playgroud)

null如果左手表达式为True,我试图返回,否则1.看似简单,但给出了编译错误.

无法确定条件表达式的类型,因为null和之间没有隐式转换int.

如果我用任何有效的替换nullin ,那么没有问题.? null : 1int

c# nullable conditional-operator

8
推荐指数
1
解决办法
1318
查看次数

Windows窗体radiobutton数据绑定

我遵循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完成.

data-binding radio-button winforms

2
推荐指数
1
解决办法
5691
查看次数