Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 与“System.Collections.ObjectModel.ObservableCollection”匹配的最佳重载方法具有一些无效参数_Wpf_Linq - Fatal编程技术网

Wpf 与“System.Collections.ObjectModel.ObservableCollection”匹配的最佳重载方法具有一些无效参数

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

谁能告诉我为什么这不可能?我是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;
    }
}
看起来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;}}