Я видел много ресурсов на этом и результатах или на все изменения в подходе и сложности. Например:Связывание комбо с локализованным enum свойством
Binding SelectedValue of ComboBox to enum in WPF
Is it possible to databind to a Enum, and show user-friendly values?
У меня есть 3 комплекта перечислений:
public enum StudentGender
{
[XmlEnum(Name ="M")]
Male,
[XmlEnum(Name = "F")]
Female
}
public enum StudentAppointed
{
[XmlEnum(Name = "E")]
Elder,
[XmlEnum(Name = "MS")]
MinisterialServant,
[XmlEnum(Name = "X")]
NotAppointed
}
public enum StudentServing
{
[XmlEnum(Name = "R")]
RegularPioneer,
[XmlEnum(Name = "P")]
Publisher,
[XmlEnum(Name = "U")]
UnbaptisedPublisher,
[XmlEnum(Name = "S")]
Studying
}
Я реализую всплывающее окно, которое имеет некоторые поля со списком на нем. Он использует связывание:
Ниже приведен пример связывания для одного из 3 полей со списком:
<StackPanel Grid.Row="2" Grid.Column="0" Margin="2" Background="WhiteSmoke">
<Label>Serving As:</Label>
<ComboBox x:Name="comboServingAs" SelectedItem="{Binding Serving}" SelectedIndex="2">
<ComboBoxItem>Studying</ComboBoxItem>
<ComboBoxItem>Unbaptized Publisher</ComboBoxItem>
<ComboBoxItem>Publisher</ComboBoxItem>
<ComboBoxItem>Regular Pioneer</ComboBoxItem>
</ComboBox>
</StackPanel>
В приведенном выше случае, Обслуживание является следующее свойство:
[XmlAttribute(AttributeName ="Publisher")]
public StudentServing Serving { get; set; }
Как уже упоминалось, я видел предыдущие идеи, которые различаются по сложности. Но, если возможно, я стараюсь избегать трижды применять одно и то же. Могу ли я иметь одно решение, которое может быть применено для всех из них?
В каждом случае мне нужно сопоставить выбранный элемент со списком с соответствующим перечислением свойств, чтобы все работало правильно. Я понимаю, что это неправильно сейчас.
Это становится сложнее для гендерного комбо, потому что я использую Brother/Sister там по причинам.
Я видел около [DescriptionAttribute]
, о котором говорится в приведенных выше ответах. Мне просто приходит в голову, что мои перечисления действительно суть целые числа. Итак, почему я не могу каким-либо образом направить на/из правого перечисления на основе выбранного значения индекса?
Надеюсь, мой вопрос не слишком запутан.
«Почему я не могу каким-либо образом нанести на/из правого перечисления на основе выбранного значения индекса?» Я бы догадался, что ответ на этот вопрос: вы не пробовали. Что мешает вам написать три ValueConverters, которые отображают индекс в значение enum и связывают с ComboBox 'SelectedIndex' вместо' SelectedItem', используя эти ValueConverters? –
@ MarkusHütter Я был тем, что его обескуражило обработать с помощью индекса. Я нашел другой способ согласно моему ответу. Благодарю. –