在WPF中,很容易使用ValueConverter格式化值等(在我们的例子中,将一些数字转换为不同的单位,例如公里到英里)
我知道它可以在Winforms中完成,但我所有的Googleing只会为WPF和Silverlight带来结果。
答案 0 :(得分:16)
如果您能够并愿意使用自定义属性修饰数据源属性,则可以use a TypeConverter
。
否则,您必须附加Parse
对象的Format
和Binding
事件。遗憾的是,除了最简单的场景之外,这使得设计师无需使用绑定。
例如,假设你想要一个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);
}
答案 1 :(得分:5)
另一种选择是为表单创建一个特定的ViewModel,它以您需要在表单上显示的格式公开数据。您可以使用AutoMapper并构建自己的Formatter轻松实现此目标。
这样你也可以完全支持设计师。