更改ComboBox文本但不更改选定项目

时间:2014-02-06 19:39:33

标签: c# wpf combobox

我有一个ComboBox,其中包含我的应用程序中定义的每个FilterViewModel的项目。每个FilterViewModel都有一个DisplayName属性,其中包含过滤器的名称。当前选定的过滤器实例保存在SelectedFilter属性中。

我希望用户能够从下拉列表中选择现有项目,还可以在文本框中更改所选过滤器的名称。输入其他名称不得更改项目选择。总是选择一个过滤器,它永远不会没有选择过滤器。

这是XAML代码:

<ComboBox
    IsEditable="True" IsTextSearchEnabled="False"
    ItemsSource="{Binding Filters}"
    SelectedItem="{Binding SelectedFilter}"
    DisplayMemberPath="DisplayName"/>

我找不到ComboBox的TextChanged事件,只是让它按原样不会改变所选项的绑定文本属性DisplayName(我原以为)。

如上所述,我该怎么做才能让它发挥作用?

背景是这个ComboBox用在我的应用程序的设置对话框中,可以管理(创建,复制,重命名,删除)过滤器,并可以编辑过滤条件。我想保存额外的按钮和窗口或TextBox来重命名过滤器,但直接提供该功能。您会看到过滤器名称,只需单击它并键入即可进行更改。但我也想使用ComboBox有一个下拉选择菜单来切换过滤器。

1 个答案:

答案 0 :(得分:3)

这应该允许您更改DisplayName SelectedFilter而不更改SelectedFilter本身:

<ComboBox 
    ItemsSource="{Binding Filters}" 
    SelectedItem="{Binding SelectedFilter}" 
    DisplayMemberPath="DisplayName"
    Text="{Binding SelectedFilter.DisplayName, Mode=TwoWay}"
    IsEditable="True" 
    IsTextSearchEnabled="False"/>