我的 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 个地方。所以,我正在考虑使用枚举而不是使用静态文本。
在这种情况下,我有两个问题
将枚举绑定到下拉列表是一个不错的选择,因为它会给你带来代码清晰、可维护性和一致性的好处。每当从枚举中添加或删除值时,它还将减少代码中所需的手动更改量。
您可以在 C# 中使用空格定义枚举值,只需在单词之间使用下划线,如下所示:
public enum MyEnum
{
One_1,
Two_2,
Three_3
}
然后,在下拉列表项中,您可以使用字符串操作将下划线替换为空格,如下所示:
var items = Enum.GetNames(typeof(MyEnum)).Select(x => x.Replace("_", " "));
myDropDown.ItemsSource = items;
这样做,空格会出现在下拉列表项中,但实际的枚举值将不包含空格,从而更容易在代码中使用它们。
在大型应用程序中,如果有很多值,使用枚举会变得很麻烦,因此您可能需要考虑将它们分组为更小的类别,并以一种使代码更易于管理的方式组织它们。
下拉列表中的枚举是一个不错的选择,我一直都这样做。您将需要两个绑定和两个转换器 - 一个用于将枚举值转换为可以绑定到
ItemsSource
的数组,另一个用于转换单个选定值。可以通过使用 DescriptionAttribute
属性来处理空格。将在后续编辑中发布代码。