У меня есть ComboBox
, который заполняется из значений перечисления:
<ComboBox ItemsSource="{utils:Enumerate {x:Type models:MyEnum}}"
SelectedItem="{Binding SelectedEnumValue, Converter={StaticResource EnumToStringConverter}}" />
, который использует utils:Enumerate
, класс расширения, чтобы получить значения перечисления
public sealed class EnumerateExtension : MarkupExtension
{
public Type Type { get; set; }
public EnumerateExtension(Type type)
{
Type = type;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
var names = Enum.GetNames(Type);
string[] values = new string[names.Length];
for (int i = 0; i < names.Length; i++)
{
values[i] = StringResources.Get(names[i]); //translating the enum value into a readable text
}
return values;
}
}
Это прекрасно работает и отображает все возможные значения перечисления в выпадающем списке. Он также содержит удобные для чтения тексты вместо значений перечисления, таких как NotReleased
.
Но я хочу, чтобы у comboxbox было другое значение - пустое. Поэтому я не могу выбрать ни одно из значений перечисления и отменить выбор ранее выбранных значений.
Как?