考虑我有绑定(bind)到ComboBox的键值对集合(Ex Key = MSFT Value = MSFT Microsoft)。 DisplayMemeberPath =值。以下需要完成

  • 在选择项目时,仅需要在组合中显示 key ,
  • ,用户还可以在“组合”中键入一个全新的值。

  • 我无法提出支持这两种功能的解决方案。解决一个会破坏另一个。
    <ComboBox IsTextSearchEnabled="True" Name="cmbBrokers" IsEditable="True"
    ItemsSource="{Binding BrokerCodes}" SelectedValuePath="Key"
     DisplayMemberPath="Value" Text="{Binding SelectedBroker, Mode=TwoWay}">
    

    最佳答案

    我猜您在找什么,如下。

    public class ComboBoxPairs
    {
        public string _Key { get; set; }
        public string _Value { get; set; }
    
        public ComboBoxPairs(string _key,string _value )
        {
            _Key = _key ;
            _Value = _value ;
        }
    }
    

    然后继续像这样使用此类
    List<ComboBoxPairs> cbp = new List<ComboBoxPairs>();
    
    cbp.Add(new ComboBoxPairs("Microsoft", "MSFT"));
    cbp.Add(new ComboBoxPairs("Apple", "AAPL"));
    

    并将其绑定(bind)到您拥有的组合框
    cmbBrokers.DisplayMemberPath = "_Key";
    cmbBrokers.SelectedValuePath = "_Value";
    
    cmbBrokers.ItemsSource = cbp;
    

    当您需要访问它时,只需执行此操作
    ComboBoxPairs cbp = (ComboBoxPairs)cmbBrokers.SelectedItem;
    
    string _key = cbp._Key;
    string _value = cbp._Value;
    

    这就是您需要做的。

    10-08 08:47