有人可以告诉我为什么这不可能?我是WPF和Linq的新手 我试图从我的第一个组合框中选择一个值,并在我的第二个组合框中显示相关值。
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;
}
}
答案 0 :(得分:0)
看起来transTypeList
是List<string>
(假设transName.Name
是字符串),并且您尝试使用它来初始化ObservableCollection<TransactionTypeViewModel>
。
constructor for ObservableCollection<T>
需要List<T>
,因此您需要提供List<TransactionTypeViewModel>
。
看起来您只需将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();