实体框架 - 将组合框绑定到规范化表格字段

时间:2009-04-01 02:08:51

标签: c# wpf database entity-framework data-binding

我目前正在尝试将实体绑定到一个表单但是我希望将DataConfidenceLevel(见下文)绑定到一个以ConfidenceDescription作为显示成员的组合框。填充组合框的正确方法是什么?

(我目前正在使用WPF,但Winforms答案是可以接受的)

由于

Entity Designer http://img19.imageshack.us/img19/374/entity.png

3 个答案:

答案 0 :(得分:2)

您想要将一个集合绑定到一个控件并拥有一个相关的实体 - 即DataConfidenceLevel类型的导航属性DataConfidenceLevel - 作为显示成员吗?

通常可以通过覆盖ToString(),

来实现
public partial class DataConfidenceLevel
{
   public override String ToString()
   {
      return this.ConfidenceDescription;
   }
}

并将DisplayMember设置为要绑定的实体的DataConfidenceLevel属性。

答案 1 :(得分:2)

答案比我预期的要简单。

    comboBox.DataBindings.Add(new Binding("SelectedItem", this.dataBindingSource, "DataConfidenceLevel", true));
    comboBox.DataSource = db.DataConfidenceLevel;
    comboBox.DisplayMember = "ConfidenceDescription";
    comboBox.ValueMember = "ConfidenceLevelID";

答案 2 :(得分:1)

我写了两篇关于处理这种情况的方法的博客文章 - 它适用于ASP.net,但它可能会帮助你。

以下是帖子,first one更多是对问题的介绍,second entry显示了如何将它们整合在一起。

我不确定这是否属于“正确的方法”,但它肯定是一种方法:)我很乐意回复这是否有助于你解决问题!

编辑:在阅读了danbruc的答案后,您当然可以按照他的建议覆盖导航属性上的ToString(只读),但这只是部分答案。

除非您的LINQ查询包含“Include”语句,例如

,否则这将不起作用
var listOfThings = (from t in db.Thingy
                    .Include("DataConfidenceLevel")
                    select t).ToList();

省略.Include()意味着什么都不会绑定到列。