我有一个SQL数据库,其中包含一个包含人员联系人记录的Contants表。 我将联系人记录对象传递给ContactsDetailsControl()方法,以显示所选记录的联系人详细信息。
ItemsListBox.ItemsSource需要一个IEnumerable对象列表
将这个实体对象转换为IEnumberable的最简单的方法是什么,而不必像下面这样做?
ItemsListBox.ItemsSource = new List()。Add(contact);
public ContactsDetailsControl(ProActive.Contact contact)
{
InitializeComponent();
List<Contact> l = new List<Contact>();
l.Add(contact);
ItemsListBox.ItemsSource = contact[];
}
答案 0 :(得分:3)
以下是制作包含单个对象的IEnumerable的通用方法。
public ContactsDetailsControl(ProActive.Contact contact)
{
InitializeComponent();
ItemsListBox.ItemsSource = MakeMeEnumerable<Contact>(contact);
}
private IEnumerable<T> MakeMeEnumerable<T>(T Entity)
{
yield return Entity;
}
答案 1 :(得分:1)
一种简单但不漂亮的方法是使用Enumerable.Repeat:
ItemsListBox.ItemsSource = Enumerable.Repeat(contact, 1);
答案 2 :(得分:1)
ItemsListBox.ItemsSource = new [] { contact };
答案 3 :(得分:0)
您将始终必须创建新列表并将联系人添加到其中。单个联系人与联系人列表不同,您不能(也不应该)直接投射到联系人。
您可能想要创建另一个继承自List<contact>
的类,您可以实例化它,并在构造函数中加载您需要的联系人。
答案 4 :(得分:0)
当你说你试图显示单个记录的信息时,似乎没有人问的问题是你为什么使用ListBox?
如果要将模板应用于项目,请使用ContentPresenter并设置ContentTemplate。 (内部是列表框在为源中的项生成视觉效果时所执行的操作)。