C# 带DisplayMemberPath/SelectedValuePath的可编辑组合框

C# 带DisplayMemberPath/SelectedValuePath的可编辑组合框,c#,wpf,dictionary,combobox,C#,Wpf,Dictionary,Combobox,我在WPF中有一个组合框: <ComboBox DisplayMemberPath="Value" IsEditable="True" ItemsSource="{Binding DescriptionCodes}" SelectedValue="{Binding DescriptionCode, Mode=TwoWay}" SelectedValuePath="Key" /> Descriptio

我在WPF中有一个组合框:

<ComboBox DisplayMemberPath="Value"
          IsEditable="True"
          ItemsSource="{Binding DescriptionCodes}"
          SelectedValue="{Binding DescriptionCode, Mode=TwoWay}"
          SelectedValuePath="Key" />

DescriptionCodes
是一个
字典
,代码与友好名称匹配。用户还可以输入自己的代码(听起来很奇怪,这是我们的应用程序套件的“标准”和意图)

然而,我的绑定创建了这样一种场景:如果用户键入一个值,
DescriptionCode
将变为
null
,因为用户输入的值在
字典中不存在


有没有办法让它按我想要的方式工作?

我不确定我是否理解您希望它如何工作:对我来说,当我键入某个内容时,它会对值进行渐进式搜索:“f”选择“Foo”,SelectedValue是“Foo”的键。如果我键入的内容不能以这种方式匹配,则SelectedValue为空。我始终可以通过将ComboBox.text绑定到viewmodel上的另一个字符串属性来获取用户键入的文本,无论该字符串是否在字典的值中找到。你是想禁止不存在的值,还是用它们做些别的事情?@EdPlunkett我忘了我可以直接从中获取
文本。如果
SelectedValue
为空,我只需要
Text
值。我怀疑是否有一种内在的方式可以做到这一点。我会看看我是否能想出一个解决方案。这似乎很简单。谢谢@edPlunketi我不确定我是否理解你想要它如何工作:对我来说,当我键入一些东西时,它会对值进行渐进搜索:“f”选择“Foo”,而SelectedValue是“Foo”的键。如果我键入的内容不能以这种方式匹配,则SelectedValue为空。我始终可以通过将ComboBox.text绑定到viewmodel上的另一个字符串属性来获取用户键入的文本,无论该字符串是否在字典的值中找到。你是想禁止不存在的值,还是用它们做些别的事情?@EdPlunkett我忘了我可以直接从中获取
文本。如果
SelectedValue
为空,我只需要
Text
值。我怀疑是否有一种内在的方式可以做到这一点。我看看能不能想出一个解决办法。这似乎很容易。谢谢@EdPlunkett