Can I do Text search with multibinding

后端 未结 2 1925
-上瘾入骨i
-上瘾入骨i 2021-01-07 00:16

I have below combo box in mvvm-wpf application. I need to implement \"Text search\" in this..(along with multibinding). Can anybody help me please.



        
2条回答
  •  情话喂你
    2021-01-07 00:49

    Unfortunately, TextSearch.Text doesn't work in a DataTemplate. Otherwise you could have done something like this

    
        
            
        
    
    

    However this won't work, so I see two solutions to your problem.

    First way
    You set IsTextSearchEnabled to True for the ComboBox, override ToString in your source class and change the MultiBinding in the TextBlock to a Binding

    Xaml

    
        
            
                
            
        
    

    Source class

    public class TheNameOfYourSourceClass
    {
        public override string ToString()
        {
            return String.Format("{0}: {1}", BidServiceCategoryId, BidServiceCategoryName);
        }
        //...
    }
    

    Second Way
    If you don't want to override ToString I think you'll have to introduce a new Property in your source class where you combine BidServiceCategoryId and BidServiceCategoryName for the TextSearch.TextPath. In this example I call it BidServiceCategory. For this to work, you'll have to call OnPropertyChanged("BidServiceCategory"); when BidServiceCategoryId or BidServiceCategoryName changes as well. If they are normal CLR properties, you can do this in set, and if they are dependency properties you'll have to use the property changed callback

    Xaml

    
        
            
                
                    
                        
                            
                            
                        
                    
                
            
        
    

    Source class

    public class TheNameOfYourSourceClass
    {
        public string BidServiceCategory
        {
            get
            {
                return String.Format("{0}: {1}", BidServiceCategoryId, BidServiceCategoryName);
            }
        }
    
        private string m_bidServiceCategoryId;
        public string BidServiceCategoryId
        {
            get
            {
                return m_bidServiceCategoryId;
            }
            set
            {
                m_bidServiceCategoryId = value;
                OnPropertyChanged("BidServiceCategoryId");
                OnPropertyChanged("BidServiceCategory");
            }
        }
    
        private string m_bidServiceCategoryName;
        public string BidServiceCategoryName
        {
            get
            {
                return m_bidServiceCategoryName;
            }
            set
            {
                m_bidServiceCategoryName = value;
                OnPropertyChanged("BidServiceCategoryName");
                OnPropertyChanged("BidServiceCategory");
            }
        }
    }
    

提交回复
热议问题