有人可以告诉我为什么这不可能? 我是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; } }Can some one please tell me Why is this not possible? I am new to WPF and Linq I am trying to select a value from my first combobox and display the related values in my second combobox.
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是一个List<string> (假设transName.Name是一个字符串),并且您尝试使用它来初始化ObservableCollection<TransactionTypeViewModel> 。
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();It looks like transTypeList is a List<string> (assuming transName.Name is a string) and you are trying to use it to initialise an ObservableCollection<TransactionTypeViewModel>.
The constructor for ObservableCollection<T> requires a List<T> so you need to provide a List<TransactionTypeViewModel> instead.
It looks like you just need to change your linq query to:
var transTypeList = (from transName in transTypeVModel.GetAllTransactionTypes() where transName.Id == getAppCode.Id select transName).ToList();or alternatively:
var transTypeList = transTypeVModel.GetAllTransactionTypes() .Where(t => t.Id == getAppCode.Id) .ToList();更多推荐
发布评论