我正在尝试使用以下代码从我的组合框填充数据源:
这是我创建绑定的部分
_columnsLayoutBinding.DataSource = _myColumnsLayout;
ColumnsLayoutDataGrid.DataSource = _columnsLayoutBinding;
DataGridCreator.CurrentInstance.CreateDataGrid<ConfigColumns>(ref ColumnsLayoutDataGrid);
然后在DataGridCreator方法调用中,我做了一些检查,并用值
填充组合框。 var list = (from object type in System.Enum.GetValues(typeof (FontSizeType)) select new KeyValuePair<string, int>(type.ToString(), (int)type)).ToList();
comboBox.DataSource = list;
comboBox.DisplayMember = "Key";
comboBox.ValueMember = "Value";
return comboBox;
问题是:何时更换用我填充数据源的代码:
var list = new List<KeyValuePair<string, int>>();
var id = 0;
foreach (var type in System.Enum.GetValues(typeof(FontSizeType)))
{
list.Add(new KeyValuePair<string, int>(type.ToString(), id));
id++;
}
comboBox.DataSource = list;
comboBox.DisplayMember = "Key";
comboBox.ValueMember = "Value";
return comboBox;
有效。问题似乎是值成员初始值0.然后它从0开始 - 确定。当它从enum start int(6)开始时 - 不工作。
这是我的普查员:
[DataContract]
[Serializable]
[Flags]
public enum FontSizeType
{
[EnumMember]
Seis = 6,
[EnumMember]
Sete = 7,
[EnumMember]
Oito = 8,
[EnumMember]
Nove = 9,
[EnumMember]
Dez = 10,
[EnumMember]
Onze = 11
答案 0 :(得分:1)
在第一个示例中,您将使用每个对应枚举的整数值填充KeyValuePair.Values。在第二部分中,您使用从零开始的计数器。试试以下内容:
foreach (var type in System.Enum.GetValues(typeof(FontStyle)))
{
list.Add(new KeyValuePair<string, int>(type.ToString(), (int)type));
id++;
}
此外,在第一个示例中,您使用的是FontSizeType枚举,而在第二个示例中,您使用的是FontStyle。这是故意的吗?没有足够的背景来确定。
答案 1 :(得分:0)
使用:
int id = 6;
这可以解决您的问题。注意:var
对此似乎是不必要的。
对于您的枚举,您使用定义[Flags]
但尚未将枚举值设置为以这种方式运行。我建议删除它或更改枚举值。但是,考虑到这个特定的枚举,其中值将枚举元素表示为数字,值必须保持不变。
以下是解释正确使用Flags
:What does the [Flags] Enum Attribute mean in C#?