2010-06-04 63 views
1

我目前已經使用與Windows窗體中的驗證相關的屬性來裝飾業務對象中的屬性。用於指定屬性或字段的顯示格式的屬性

我想添加一些屬性來確定數據的格式。這將希望能夠與數據綁定無縫協作。

有沒有辦法做到這一點?

+0

您針對哪個平臺? WPF?的WinForms? Silverlight的? – Giorgi 2010-06-04 21:27:43

+0

winforms是我目前使用的 – 2010-06-04 21:35:54

+0

基本上我正在尋找解決方案,例如,我有多個「雙」成員,但希望顯示每個有不同數量的有效數字。具有類似於驗證屬性的「格式」屬性是有意義的。 – 2010-06-07 13:02:41

回答

3

格式化(Winforms中)經由兩個主要方法來實現的:

  • 對於粗粒格式化,覆蓋ToString()
  • 細粒度格式化,定義一個TypeConverter子類,並在自定義使用[TypeConverter(...)]類型(或一類等的特性),以應用格式(當目標類型是typeof(string)

例如:

using System; 
using System.ComponentModel; 
using System.Windows.Forms; 
class MyObject 
{ 
    [TypeConverter(typeof(MyConverter))] 
    public decimal SomeValue { get; set; } 
} 

class MyConverter : TypeConverter { 
    public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, System.Type destinationType) 
    { 
     if(destinationType == typeof(string)) { 
      return "Our survery says: " + value + "%"; 
     } 
     return base.ConvertTo(context, culture, value, destinationType); 
    } 
} 
static class Program { 
    [STAThread] 
    static void Main() { 
     using(var form = new Form()) { 
      form.DataBindings.Add("Text",new MyObject { SomeValue = 27.1M}, "SomeValue", true); 
      Application.Run(form); 
     } 
    } 
} 
+0

我在考慮更多的成員/屬性(已經有驗證屬性),我也可以應用某種屬性來控制格式。這將包括內置類型,如雙等。 – 2010-06-05 18:06:43

+0

@ user144182 - 是不是我所顯示的?一個屬性('SomeValue'),帶有一個屬性('[TypeConverter]')來協助格式化,處理一個內置的類型('decimal') – 2010-06-06 07:09:57

+0

對不起馬克,我不清楚 - 我一直在想可能能夠在屬性本身中指定格式字符串的行,比如[DataFormat(0.00)]。 – 2010-06-06 21:39:58