在WPF中很容易使用ValueConverter格式化值等使用ValueConverter與數據綁定,(在我們的情況下將一些號碼爲不同的單位,例如公里英里)我如何的WinForms
我知道它可以在Winforms中完成,但我所有的Googleing都只是爲WPF和Silverlight帶來結果。
在WPF中很容易使用ValueConverter格式化值等使用ValueConverter與數據綁定,(在我們的情況下將一些號碼爲不同的單位,例如公里英里)我如何的WinForms
我知道它可以在Winforms中完成,但我所有的Googleing都只是爲WPF和Silverlight帶來結果。
如果您能夠並願意使用自定義屬性修飾數據源屬性,則您可以use a TypeConverter
。
否則,您必須附加Binding
對象的Parse
和Format
事件。不幸的是,這不需要使用設計器來綁定除了最簡單的場景以外的所有設備。
例如,假設你想綁定到較公里的整列TextBox
和你想在英里的可視化表示:
在構造函數中:
Binding bind = new Binding("Text", source, "PropertyName");
bind.Format += bind_Format;
bind.Parse += bind_Parse;
textBox.DataBindings.Add(bind);
...
void bind_Format(object sender, ConvertEventArgs e)
{
int km = (int)e.Value;
e.Value = ConvertKMToMiles(km).ToString();
}
void bind_Parse(object sender, ConvertEventArgs e)
{
int miles = int.Parse((string)e.Value);
e.Value = ConvertMilesToKM(miles);
}
值得一提的是,這種技術只會涉及綁定對象被使用和暴露的場景。它不適用於網格和其他複雜的綁定控件,除非它們擁有自己的格式/分析API。因此,不幸的是,在WinForms數據綁定機制中確實沒有使用值轉換器的「通用」方法。 – Crono 2014-09-10 18:55:58
另一種選擇是爲窗體顯示特定的ViewModel,該窗體以需要在窗體上顯示的格式顯示數據。您可以使用AutoMapper並自行構建您自己的Formatter來輕鬆實現。
這樣你也可以完全支持設計師。
相關:http://stackoverflow.com/q/3430217/240733 – stakx 2015-10-04 07:13:22