Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2年前关闭。
是否可以为将始终使用的枚举类型而不是默认的
我希望此转换器可以在XAML代码中的任何地方使用,而无需指定要使用的转换器(如果可能)
而且我还必须编写一个基于EnumConverter类的转换器
这可行。有人对此解决方案有任何意见吗?
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2年前关闭。
是否可以为将始终使用的枚举类型而不是默认的
EnumConverter
编写自定义的EnumConverter
?我希望此转换器可以在XAML代码中的任何地方使用,而无需指定要使用的转换器(如果可能)
最佳答案
我发现了如何执行此操作:-)这会将所有此类型的枚举转换为选定的字符串。
首先,我必须向我的枚举添加TypeConverter属性:
using System.ComponentModel;
namespace WpfTestTypeConverter
{
[TypeConverter(typeof(DeviceTypeConverter))]
public enum DeviceType
{
Computer,
Car,
Bike,
Boat,
TV
}
}
而且我还必须编写一个基于EnumConverter类的转换器
using System;
using System.ComponentModel;
using System.Globalization;
namespace WpfTestTypeConverter
{
public class DeviceTypeConverter : EnumConverter
{
public DeviceTypeConverter(Type type) : base(type)
{
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
return (destinationType == typeof(string));
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
if (value is DeviceType)
{
DeviceType x = (DeviceType)value;
switch (x)
{
case DeviceType.Computer:
return "This is a computer";
case DeviceType.Car:
return "A big car";
case DeviceType.Bike:
return "My red bike";
case DeviceType.Boat:
return "Boat is a goat";
case DeviceType.TV:
return "Television";
default:
throw new NotImplementedException("{x} is not translated. Add it!!!");
}
}
return base.ConvertFrom(context, culture, value);
}
}
}
这可行。有人对此解决方案有任何意见吗?
关于c# - 是否可以编写一个自定义的EnumConverter而不是默认的EnumConverter来使用? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46329277/
10-11 02:00