c# - 更改 ComboBox 文本但不更改所选项目

标签 c# wpf combobox

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

我希望用户能够从下拉列表中选择现有项目,但也可以在文本框中更改所选过滤器的名称。输入另一个名称不得更改项目选择。永远只有一个过滤器被选中,不可能没有过滤器被选中。

这是 XAML 代码:

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

我找不到 ComboBox 的 TextChanged 事件,只是让它保持原样不会更改所选项目的绑定(bind)文本属性 DisplayName(我已经预料到了)。

我该怎么做才能让它像上面描述的那样工作?

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

最佳答案

这应该允许您更改 SelectedFilterDisplayName 而无需更改 SelectedFilter 本身:

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

关于c# - 更改 ComboBox 文本但不更改所选项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21612375/

相关文章:

C#WPF UI在UI线程中更新数据时挂起

c# - 当可执行文件与数据文件不在同一文件夹中时附加到文件失败

wpf - MEF 和 WPF 自定义导入定义

java - Jcombobox,当选择某个项目时,显示一个值

validation - 检查下拉列表中的值

c# - WPF MVVM 将项目添加到组合框并更改选定项目

c# - 从磁盘加载 WindowsFormsControlLibrary DLL,然后添加到控件,C#

c# - 如何动态更改/设置 checkedListBox 项目前颜色

c# - CMD 上未返回 ExitCode

单击时 WPF 弹出窗口不会关闭