使用组合框DisplayMember&;ValueMember属性

本文关键字:amp ValueMember 属性 DisplayMember 组合 | 更新日期: 2023-09-27 17:58:22

我正在向WinForms应用程序添加一个组合框,我遇到了DisplayMember&ValueMember属性。它们的功能正是我在应用程序中所需要的,但我不确定我是否喜欢它们的工作方式。

comboBox.Items.Add(myObj);
comboBox.DisplayMember = "Name";
comboBox.ValueMember = "Id";

在上面的代码中,我的对象是实际的"Item",它的名称&Id属性将用于显示的文本&分别选择值。我不确定的是硬编码的"名称"&"Id"被传递到这些属性中。这是编译时未检查的内容。所以,如果我改变了我的目标。将属性命名为对象。FullName,此代码将在运行时中断。

我曾考虑过动态获取属性名称(正如这里所要求的:获取变量或参数的名称),但这感觉非常错误。

那么,使用这些房产是否不明智?如果是,建议用什么方法将我的对象存储为组合框项?

使用组合框DisplayMember&;ValueMember属性

使用它们非常好。

关于编译时检查:在C#的下一个版本中,有一个nameof运算符,与现在的typeof运算符相当。

你可以这样使用它:

comboBox.DisplayMember = nameof(obj.Name);

已经有了类似的解决方案。

模型/视图模型和视图之间的这种松散耦合实际上越来越常见。XAML的绑定(用于WPF、Silverlight、WindowsPhone等)以非常相似的方式工作。您可以使用一些技术来强制XAML设计器提供一些反馈(http://msdn.microsoft.com/en-us/library/ff602274.aspx),但这些不会破坏编译。接受它!