WPF的ComboBox实现可过滤显示下拉内容

    xiaoxiao2021-12-14  17

    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; } }

    转载请注明原文地址: https://ju.6miu.com/read-965442.html

    最新回复(0)