关联WPF中的两个组合框

时间:2013-06-19 14:49:36

标签: c# wpf mvvm combobox

我有一个带有两个ComboBox es的WPF应用程序 当我选择第一个组合框时,与第一个组合框相关的项目将填充在第二个组合

这是我的选择属性

   public string SelectedApplication
    {
        set
        {
            if (_selectedApplication == value) return;
            this._selectedApplication = value;

            InitializeTransactionTypes();


        }
        get
        {
            return this._selectedApplication;
        }

    }

这里我检查两个组合框之间的匹配id以填充第二个控制项。

    ObservableCollection<TransactionTypeViewModel> _transTypeObsList = new ObservableCollection<TransactionTypeViewModel>();
       private void InitializeTransactionTypes()
    {
        if (_selectedApplication != null)
        {
            if (transactionTypes != null)
            {
                transactionTypes.Clear();
            }

            var getAppCode =
                ApplicationVModel.GetAllApplications().FirstOrDefault(apps => apps.Name == _selectedApplication);

            var transTypeList = TransactionTypeVModel.GetAllTransactionTypes()
                                                     .Where(t => getAppCode != null && t.Id == getAppCode.Id)
                                                     .ToList();

            _transTypeObsList = new ObservableCollection<TransactionTypeViewModel>(transTypeList);
        }
        this.transactionTypes = _transTypeObsList;

        NotifyPropertyChanged("TransactionTypes");
    }

让我说我选择第一个组合框有{A,B,C,D} ......第二个组合框有{A'1,A'2,A'3},当我从第一个Combobox中选择第二个项目时combobo不断填充 项目。我想只显示{A'1代表A} {B'1代表B} ......等等,但现在它的作用是{A'1 A'1 A'1 .....代表A} {B'每个选择1 B'1 B'1 .... for B}。

编辑:

从模型列表中映射的VM列表

       public List<TransactionTypeViewModel> GetAllViewModelTransTypes()
    {
        TransactionTypeViewModels =   TransactionTypeModel.GetAllTransactionTypes().Select(transType => new TransactionTypeViewModel
        {
            Id = transType.Id,
            Name = transType.Name,
            RequestMessageType = transType.RequestMessageType,
            ResponseMessageTypes = transType.ResponseMessageTypes,
            WsMethodName = transType.WSMethodName,
            WsRequestXmlType = transType.WSRequestXmlType,
            WsResponseXmlType = transType.WSResponseXmlType,
            XsdFile = transType.XsdFile,

        })
    .ToList();
        return TransactionTypeViewModels;
    }

VM列表中的可观察VM列表

     public ObservableCollection<TransactionTypeViewModel> GetAllTransactionTypes()
    {
        TransactionTypeViewModelList = this.GetAllViewModelTransTypes();
        ObservableTransactionType = new ObservableCollection<TransactionTypeViewModel>(TransactionTypeViewModelList);

        return ObservableTransactionType;
    }

编辑:

  private void InitializeTransactionTypes()
    {
        if (_selectedApplication != null)
        {

            var getAppCode =
                ApplicationVModel.GetAllApplications()
                                 .FirstOrDefault(apps => apps.Name == _selectedApplication);

            var transTypeList = TransactionTypeVModel.GetAllTransactionTypes()
                                                     .Where(t => getAppCode != null && t.Id == getAppCode.Id);

            transactionTypes = new ObservableCollection<TransactionTypeViewModel>(transTypeList); 

           NotifyPropertyChanged("TransactionTypes");
        }
    }

0 个答案:

没有答案