什么时候在 C# 中使用枚举作为下拉列表?

问题描述 投票:0回答:2

我的 WPF 应用程序中有下拉菜单。它们是动态的,基于对同一屏幕或其他屏幕中其他控件的选择。 例如:

if (dropDown1.SelectedValue == "Name 1")
      dropDown2.ItemSource = new List<string>() { "one 1", "Two 2", "Three 3" };
else
      dropDown2.ItemSource = new List<string>() { "one 1", "Three 3" };

如上例所示,我在“if conditions”中使用了这些下拉菜单。如果下拉项目有任何变化,我必须在我使用的任何地方替换文本(在本例中为“名称 1”)。整个应用程序可能有 100 个地方。所以,我正在考虑使用枚举而不是使用静态文本。

在这种情况下,我有两个问题

  1. 绑定 enum 到 droplist 是不是一个好的选择?他们如何处理大型应用程序?
  2. 如果我将枚举绑定到下拉列表,我怎么能在视图中有带空格的下拉列表项(例如:“one 1”)。
c# wpf mvvm enums dropdown
2个回答
0
投票

将枚举绑定到下拉列表是一个不错的选择,因为它会给你带来代码清晰、可维护性和一致性的好处。每当从枚举中添加或删除值时,它还将减少代码中所需的手动更改量。

您可以在 C# 中使用空格定义枚举值,只需在单词之间使用下划线,如下所示:

public enum MyEnum
{
    One_1,
    Two_2,
    Three_3
}

然后,在下拉列表项中,您可以使用字符串操作将下划线替换为空格,如下所示:

var items = Enum.GetNames(typeof(MyEnum)).Select(x => x.Replace("_", " "));
myDropDown.ItemsSource = items;

这样做,空格会出现在下拉列表项中,但实际的枚举值将不包含空格,从而更容易在代码中使用它们。

在大型应用程序中,如果有很多值,使用枚举会变得很麻烦,因此您可能需要考虑将它们分组为更小的类别,并以一种使代码更易于管理的方式组织它们。


0
投票

下拉列表中的枚举是一个不错的选择,我一直都这样做。您将需要两个绑定和两个转换器 - 一个用于将枚举值转换为可以绑定到

ItemsSource
的数组,另一个用于转换单个选定值。可以通过使用
DescriptionAttribute
属性来处理空格。将在后续编辑中发布代码。

© www.soinside.com 2019 - 2024. All rights reserved.