Linq To Sql ComboBox(DropDownList)设置默认绑定

时间:2011-06-02 16:47:02

标签: winforms visual-studio-2010 linq-to-sql combobox

我们使用Linq To Sql定期设置简单的winforms。我最近发现,当用作DropDownList时,ComboBox控件仅在单击时更新底层数据绑定。因此,如果您选中控件,请按第一个字母选择您的条目,然后选项卡。底层数据绑定永远不会获得新值。 Linq将绑定属性设置为默认的ComboBox控件的文本值。

对此的修复是更改linq绑定值(感谢评论者RedDog指出这一点)。

所以我的问题是这样的:当从Linq拖动到Sql数据源时,如何设置Visual Studio使ComboBox自动将bindingsource设置为SelectedItem而不是Text?当然,保存工作,但也防止错误找到客户的方式。

1 个答案:

答案 0 :(得分:1)

因此,如上所述,我相信您已通过绑定到SelectedItem并确保将DataSourceUpdateMode设置为OnPropertyChanged来解决此问题。

然而,通过改述的问题,你会发现你无法改变VS的行为。您必须对绑定的内容做出选择。那里有DefaultPropertyAttribute at least some of the designer listens to,但我不知道它是否适用于绑定。

我将在我们的应用程序中添加一个帮助器类,在代码隐藏中手动添加所有绑定,而不是通过设计器。这为我们带来了许多好处,包括对我们所有绑定控件的常见行为“修复”。它还允许我们使用LINQ表达式来解析属性名称并确保绑定始终是数据源上的有效字段名称 - 如果通过设计器设置绑定,然后删除模式中的字段,那么您将不会知道问题直到运行时间。

在组合框的情况下,我们的助手类有以下方法的解决方法:

  • 始终将DataSourceUpdateMode设为OnPropertyChanged
  • 如果绑定到SelectedItem或SelectedValue:
    • 然后添加一个绑定Parse事件处理程序,以便在SelectedIndex为-1时将绑定值重置为绑定类型的默认值
    • 在添加绑定后更改组合框的数据源时,重置组合框的SelectedIndex(注意,由于某种原因绑定到SelectedValue时必须执行更多特殊操作)