是否可以这样做:
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>
,但我希望有一个更简化的解决方案。想法?
答案 0 :(得分:1)
您可以在包装器中添加另一个属性:
...
public ParameterWrapper Self { get { return this; } }
...
并设置ValueMember="Self";
另一个(恕我直言,更好)选项是ValueMember
取消设置(默认为null
)并使用SelectedItem
代替SelectedValue
答案 1 :(得分:1)
如果您未指定ValueMember
,Value
将返回该项目本身 - 在这种情况下,您的ParameterWrapper
实例。
在这里远远不及满足于眼睛!