簡單的添加綁定到文本框裡就行了:
textBox1.DataBindings.Add ("ForeColor",
src, "ForegroundColor");
當數據綁定配置好以後 ,textBox1會根據內部源對象的值,用正確的顏色來繪制文本。這樣,你就已經 大大減少了從源數據到控件的數據來回傳輸。不再須要對不同地方顯示不同顏色 來處理很多事件了。你的數據源對象保持對屬性的正確顯示進行跟蹤,而表單控 件對數據綁定進行控制。
通過這個例子,我演示了Windows表單的數據綁 定,同樣的在web應用程序中也是一樣的原則:你可以很好的綁定數據源的屬性 到web控件的屬性上:
<ASP:TextBox id=TextBox1 runat="server"
Text="<%# src.Text % >"
ForeColor="<%# src.ForegroundColor % >">
這就是說,當你創建一個應用程序在UI上顯示的 類型時,你應該添加一些必須的屬性來創建和更新你的UI,以便用戶在必要時使 用。
當你的對象不支持你要的屬性時怎麼辦呢?那就把它封裝成你想要 的。看這樣的數據結構:
public struct FinancialResults
{
public decimal Revenue
{
get { return _revenue; }
}
public int NumberOfSales
{
get { return _numSales; }
}
public decimal Costs
{
get { return _cost;}
}
public decimal Profit
{
get { return _revenue - _cost; }
}
}
要求你在一個表單上以特殊的格式信息來顯示這些,如果收 益為負,你必須以紅色來顯示收益。如果薪水小於100,你應該用粗體顯示。如 果開銷在10千(1萬)以上,你也應該用粗體顯示。創建FinancialResults結構的 開發者沒有添加UI功能到這個結構上。這很可能是正確的選擇, FinancialResults應該限制它的功能,只用於存儲實際的值。你可以創建一個新 類型,包含UI格式化屬性,以及在FinancialResults結構中的原始的存儲屬性:
public struct FinancialDisplayResults
{
private FinancialResults _results;
public FinancialResults Results
{
get { return _results; }
}
public Color ProfitForegroundColor
{
get
{
return ( _results.Profit >= 0 ) ?
Color.Black : Color.Red;
}
}
// other formatting options elided
}
這樣,你就創建了一個簡單的數據結構來幫助你 所包含的數據結構來進行數據綁定:
// Use the same datasource. That creates one Binding Manager
textBox1.DataBindings.Add ("Text", src, "Results.Profit");
textBox1.DataBindings.Add ("ForeColor",src,”ProfitForegroundColor");