1.ComboBox绑定打开下拉列表事件DropDownOpened,把ComboBox设置为可编辑IsEditable="True"
<ComboBox x:Name="cmbxPortList" Margin="5" Width="200" ItemsSource="{Binding PortList}" DisplayMemberPath="PortName" SelectedValuePath="PortCd" IsEditable="True" Background="White"> <i:Interaction.Triggers> <i:EventTrigger EventName="DropDownOpened"> <i:InvokeCommandAction Command="{Binding ComboBoxPortDropDownOpened}" CommandParameter="{Binding ElementName=cmbxPortList}"/> </i:EventTrigger> </i:Interaction.Triggers> </ComboBox> 2.代码获取输入值,根据输入值过滤查询下拉列表值 /// <summary> /// 点击港口控件,动态加载港口下拉列表数据 /// </summary> private void ComboBoxPortDropDownOpenedExecute(object obj) { if(portAllList==null) { portAllList = portDao.getBasePortList(null); } ComboBox cmbxPortList = obj as ComboBox; string key = (string)cmbxPortList.Text; if(!String.IsNullOrEmpty(key)) { List<BasePortModel> tempList = new List<BasePortModel>(); foreach (BasePortModel value in portAllList) { if(!String.IsNullOrEmpty(value.PortCd) && value.PortCd.Contains(key)) { tempList.Add(value); continue; } if (!String.IsNullOrEmpty(value.PortEName) && value.PortEName.Contains(key)) { tempList.Add(value); continue; } if (!String.IsNullOrEmpty(value.PortName) && value.PortName.Contains(key)) { tempList.Add(value); continue; } } this.PortList = tempList; } else { this.PortList = portAllList; } }