Wpf 与“System.Collections.ObjectModel.ObservableCollection”匹配的最佳重载方法具有一些无效参数
谁能告诉我为什么这不可能?我是WPF和Linq的新手 我试图从第一个组合框中选择一个值,并在第二个组合框中显示相关值Wpf 与“System.Collections.ObjectModel.ObservableCollection”匹配的最佳重载方法具有一些无效参数,wpf,linq,Wpf,Linq,谁能告诉我为什么这不可能?我是WPF和Linq的新手 我试图从第一个组合框中选择一个值,并在第二个组合框中显示相关值 private void initializeTransactionTypes() { var getAppCode = applicationVModel.GetAllApplications().FirstOrDefault(apps => apps.AppCode == selectedApplication); var transTypeLis
private void initializeTransactionTypes()
{
var getAppCode = applicationVModel.GetAllApplications().FirstOrDefault(apps => apps.AppCode == selectedApplication);
var transTypeList = (from transName in transTypeVModel.GetAllTransactionTypes()
where transName.Id == getAppCode.Id
select transName.Name).ToList();
//cast list of string to observ.
ObservableCollection<TransactionTypeViewModel> transTypeObsList =
new ObservableCollection<TransactionTypeViewModel>(transTypeList);
TransactionTypes = transTypeObsList;
NotifyPropertyChanged("TransactionTypes");
// }
//}
}
// Bind trans type combobox to this
public ObservableCollection<TransactionTypeViewModel> TransactionTypes
{
set
{
initializeTransactionTypes();
NotifyPropertyChanged("TransactionTypes");
}
get
{
return _transactionType;
}
}
看起来transTypeList是一个假定transName的列表。Name是一个字符串,您试图使用它初始化一个ObservableCollection
需要一个列表,因此您需要提供一个列表
看起来您只需要将linq查询更改为:
var transTypeList = (from transName in transTypeVModel.GetAllTransactionTypes()
where transName.Id == getAppCode.Id
select transName).ToList();
或者:
var transTypeList = transTypeVModel.GetAllTransactionTypes()
.Where(t => t.Id == getAppCode.Id)
.ToList();
李:非常感谢你,这很有帮助。。现在,我可以选择应用程序并进入initializeTransactionTypes方法,但我的getAppCode为null是否查询错误?@Eda-如果appCode为null,则applicationVModel.GetAllApplications中没有appCode等于selectedApplication的元素。如果找不到匹配的元素,FirstOrDefault将返回null。无论我为selectedApplication分配了什么,在我从应用程序组合中进行选择之后,我都不会提取该值,以便在initializeTransactionTypes方法中进行比较。例如,我为它提供了测试公共字符串selectedApplication{set{this.selectedApplication=value;initializeTransactionTypes;}}这是返回null的部分:var getAppCode=applicationVModel.GetAllApplications.Wherepps=>apps.Name==selectedApplication.FirstOrDefault;如果我给它一个静态数据,例如var getAppCode=applicationVModel.GetAllApplications.Wherepps=>apps.Name==“Test”.FirstOrDefault;它按预期工作,但我希望使其动态。这是我的selectApplication属性private string selectedApplication;private string selectedApplication;public string selectedApplication{set{this.selectedApplication=value;initializeTransactionTypes;}get{返回此.selectedApplication;}}