【发布时间】:2016-10-28 13:20:19
【问题描述】:
我已经看到了很多关于这方面的资源,结果或所有的方法和复杂性都各不相同。例如:
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>
在上述情况下,Serving 是以下属性:
[XmlAttribute(AttributeName ="Publisher")]
public StudentServing Serving { get; set; }
如前所述,我已经看到了复杂程度各不相同的以前的想法。但如果可能的话,我会尽量避免必须实施同样的事情三次。我可以有一个可以适用于所有这些的解决方案吗?
在每种情况下,我都需要将选定的组合框项与关联的属性枚举映射,这样一切正常。我现在意识到这是错误的。
性别组合变得更加复杂,因为我在那里使用兄弟/姐妹也是有原因的。
我也确实看到了上述答案中提到的[DescriptionAttribute]。我突然想到我的枚举实际上实际上是整数。那么为什么我不能根据所选索引值以某种方式向/从正确的枚举转换?
我希望我的问题不会太混乱。
【问题讨论】:
-
“那么为什么我不能根据所选索引值以某种方式向/从正确的枚举转换?”我猜答案是:你还没有尝试过。是什么阻止您编写三个将索引映射到枚举值并使用这些 ValueConverters 绑定到组合框的
SelectedIndex而不是SelectedItem的 ValueConverter? -
@MarkusHütter 我不鼓励通过索引处理它。根据我的回答,我找到了另一种方法。谢谢。
标签: c# wpf binding combobox enums