从BindingList <wrapper>填充组合框并返回Wrapper本身

时间:2016-08-17 19:19:23

标签: c# combobox

是否可以这样做:

public class ParameterWrapper
{
    public string Name { get; set; }
    public Definition Definition { get; set; }
    public StorageType StorageType { get; set; }
}

然后在BindingList<ParameterWrapper>中使用它将它绑定到这样的ComboBox控件:

private void PopulateDropdownBinding(ComboBox control, BindingList<ParameterWrapper> parameters)
{
    control.DataSource = parameters;
    control.DisplayMember = "Name";
    control.ValueMember = ???;
}

我在哪里“???”是我的问题。我想返回实际的Wrapper对象。因此,显示名称是Wrapper.Name,但显示值是包装器。可以这样做吗?

当然我可以拿BindingList<ParameterWrapper>并坚持Dictionary<string, ParameterWrapper>,但我希望有一个更简化的解决方案。想法?

2 个答案:

答案 0 :(得分:1)

您可以在包装器中添加另一个属性:

...
public ParameterWrapper Self { get { return this; } }
...

并设置ValueMember="Self";

另一个(恕我直言,更好)选项是ValueMember取消设置(默认为null)并使用SelectedItem代替SelectedValue

答案 1 :(得分:1)

如果您未指定ValueMemberValue将返回该项目本身 - 在这种情况下,您的ParameterWrapper实例。

在这里远远不及满足于眼睛!