关于Enum Type 设计问题

最近项目中遇到一个问题需要把一个enum type绑定到combox,而且要有space.开始定义如下

  public enum SearchConfigType
    {
        SmartFrequency,
        EveryNDays,
        Weekly,
        Monthly,
    }

使用我们库函数AddSpaceBeforeUppercaseChar 有点问题SmartFrequency --> Smart Frequency,EveryNDays--->EveryN Days, 这个库函数在其他地方要用,不能修改。

如果改成

  public enum SearchConfigType
    {
        Smart_Frequency,
        Every_N_Days,
        Weekly,
        Monthly,
    }

可以使用

 public class EnumnToStringConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            try
            {
                if (value == null)
                    return null;
                 string name = value.ToString().Replace('_',' ');
                 return name.AddSpaceBeforeUppercaseChar();
                
            }
            catch
            {
                return value;
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }。

只需要约定用‘_’来代替‘ ’,EnumnToStringConverter 可以自动实现add space. 在datagrid,combox绑定Enumn 都能使用。这也是Type 设计的一个小技巧

posted @ 2011-06-08 13:44  mjg  阅读(405)  评论(0编辑  收藏  举报