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

来源:互联网 发布:ip广播软件 编辑:程序博客网 时间:2024/06/07 13:35

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



0 0
原创粉丝点击