Effective C# 原则38:使用和支持数据绑定
2009-02-19 08:15:45 来源:WEB开发网例如,假设只要在数据不合法时,要求将文字显示为红色,你可能会写这样的代码:
if ( src.TextIsInvalid )
{
textBox1.ForeColor = Color.Red;
} else
{
textBox1.ForeColor = Color.Black;
}
这很好,但只要在文字源发生改变时,你要随时调用这段代码。这可能是在用户编辑了文字,或者是在底层的数据源发生改变时。这里有太多的事件要处理了,而且很多地方你可能会错过。但,使用数据绑定时,在src对象上添加一个属性,返回恰当的前景颜色就行了。
另一个逻辑可能是要根据文字消息的状态,来设置值可变化为恰当颜色的值:
private Color _clr = Color.Black;
public Color ForegroundColor
{
get
{
return _clr;
}
}
private string _txtToDisplay;
public string Text
{
get
{
return _txtToDisplay;
}
set
{
_txtToDisplay = value;
UpdateDisplayColor( IsTextValid( ) );
}
}
private void UpdateDisplayColor( bool bValid )
{
_clr = ( bValid ) ? Color.Black : Color.Red;
}
简单的添加绑定到文本框里就行了:
textBox1.DataBindings.Add ("ForeColor",
src, "ForegroundColor");
当数据绑定配置好以后,textBox1会根据内部源对象的值,用正确的颜色来绘制文本。这样,你就已经大大减少了从源数据到控件的数据来回传输。不再须要对不同地方显示不同颜色来处理很多事件了。你的数据源对象保持对属性的正确显示进行跟踪,而表单控件对数据绑定进行控制。
更多精彩
赞助商链接