将组合绑定到本地化的枚举属性

时间:2016-06-26 12:25:38

标签: c# wpf binding combobox enums

我已经看到了很多这方面的资源和结果,或者所有方法和复杂性各不相同。例如:

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
}

我正在实现一个弹出窗口,其上有一些组合框。它正在使用绑定:

Popup Window

以下是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>

在上述情况下,Serving是以下属性:

[XmlAttribute(AttributeName ="Publisher")]
public StudentServing Serving { get; set; }

如上所述,我看过以前的想法,其复杂性各不相同。但如果可能的话,我试图避免必须三次实施同样的事情。我可以有一个可以应用于所有这些解决方案的解决方案吗?

在每种情况下,我都需要将选定的组合框项目与关联的属性枚举映射,这样一切正常。我现在意识到这是错的。

性别组合变得更复杂,因为我也在那里使用兄弟/姐妹。

我确实也看到了上述答案中提到的[DescriptionAttribute]。我发现我的枚举基本上就是整数。那么为什么我不能根据所选的索引值以某种方式强制转换为正确的枚举?

我希望我的问题不会太混乱。

1 个答案:

答案 0 :(得分:1)

我发现了一篇很棒的文章here,帮助了我!

我添加了上面教程中描述的事件处理程序,然后能够处理所有事情!

排序。