最近项目中遇到一个问题需要把一个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 设计的一个小技巧