使用 LINQ 生成时 DisplayMemberPath 和 SelectedValuePath 问题 ComboBox.ItemsSource
DisplayMemberPath and SelectedValuePath issue while using LINQ to generate ComboBox.ItemsSource
XAML代码:
<ComboBox Name="comboBoxAccountName" DisplayMemberPath="AccountName" SelectedValuePath="AccountID" />
ItemComboBoxAccount class:
public class ItemComboBoxAccount
{
private int accountID;
private String accountName;
public int AccountID
{
get { return accountID; }
set { accountID = value; }
}
public String AccountName
{
get { return accountName; }
set { accountName = value; }
}
}
LINQ 查询:
comboBoxAccountName.ItemsSource = (from accounts in dataContext.Accounts
select new { accountName = accounts.accountName, accountID = accounts.accountID }
).AsEnumerable()
.Select(x => new ItemComboBoxAccount { AccountID = x.accountID, AccountName = x.accountName })
.ToList();
ComboBox 不显示任何项目,Accounts 中的行数与帐户数一样多,但行仍为空白。我要显示帐户名。
好吧,对于实体,我会使用 lambda 表达式来设置项目源。这样我就可以通过一种方法动态填充组合框,而无需使用数据绑定。
我使用 sql,然后在 context.tt 文件中创建数据库实例。
操纵以下内容供您自己使用:
打算使用 "BankEntities" 来表示数据库实体。
尝试:
combobox.itemsource = BankEntities.instance.BankAccounts.where(x => x.AccountName == x.AccountName).ToList();
或
combobox.itemsource = BankEntities.instance.BankAccounts.where(x => x.AccountId == x.AccountId).ToList();
XAML代码:
<ComboBox Name="comboBoxAccountName" DisplayMemberPath="AccountName" SelectedValuePath="AccountID" />
ItemComboBoxAccount class:
public class ItemComboBoxAccount
{
private int accountID;
private String accountName;
public int AccountID
{
get { return accountID; }
set { accountID = value; }
}
public String AccountName
{
get { return accountName; }
set { accountName = value; }
}
}
LINQ 查询:
comboBoxAccountName.ItemsSource = (from accounts in dataContext.Accounts
select new { accountName = accounts.accountName, accountID = accounts.accountID }
).AsEnumerable()
.Select(x => new ItemComboBoxAccount { AccountID = x.accountID, AccountName = x.accountName })
.ToList();
ComboBox 不显示任何项目,Accounts 中的行数与帐户数一样多,但行仍为空白。我要显示帐户名。
好吧,对于实体,我会使用 lambda 表达式来设置项目源。这样我就可以通过一种方法动态填充组合框,而无需使用数据绑定。
我使用 sql,然后在 context.tt 文件中创建数据库实例。
操纵以下内容供您自己使用:
打算使用 "BankEntities" 来表示数据库实体。
尝试:
combobox.itemsource = BankEntities.instance.BankAccounts.where(x => x.AccountName == x.AccountName).ToList();
或
combobox.itemsource = BankEntities.instance.BankAccounts.where(x => x.AccountId == x.AccountId).ToList();