none
WPF Editable Combobox RRS feed

  • Вопрос

  • Есть Combobox с заранее определенным списком, но при этом пользователь сам может добавлять новые элементы. Свойство IsEditable не помогает, введенный текст не присваивается в SelectedItem/

     

    <ComboBox SelectedItem="{Binding Seller}" ItemsSource="{Binding OrderSellers}" IsEnabled="{Binding BoughtOrder}" IsEditable="True"/>
    

    public string Seller
        {
          get { return _seller; }
          set
          {
            if (_seller == value) return;
            _seller = value;
            if (!OrderSellers.Contains(_seller)) OrderSellers.Add(_seller);
            RaisePropertyChanged("Seller");
          }
        }
    

    Если воспользоваться свойством Text у Combobox, то присвоение происходит на событие изменения текста, а не потерю фокуса. В результате чего в Combobox добавляется вся история правок, т.е.:

    т

    те

    тек

    текс

    текст

     

    <ComboBox Text="{Binding Seller}" SelectedItem="{Binding Seller}" ItemsSource="{Binding OrderSellers}" IsEnabled="{Binding BoughtOrder}" IsEditable="True"/>
    

    9 марта 2011 г. 8:34

Ответы

  • Можете задать в выражении привязки, чтобы изменения происходили не по изменению свойста, а при потери фокуса. Это делается с помощью свойста UpdateSourceTrigger:

    <ComboBox Text="{Binding UpdateSourceTrigger=LostFocus}"></ComboBox>
    

     


    Для связи [mail]
    • Предложено в качестве ответа Abolmasov Dmitry 24 марта 2011 г. 14:03
    • Помечено в качестве ответа I.Vorontsov 29 марта 2011 г. 8:12
    12 марта 2011 г. 18:56

Все ответы