C# 更改组合框文本但不更改选定项
我有一个组合框,其中包含应用程序中定义的每个FilterViewModel的一个项。每个FilterViewModel都有一个包含筛选器名称的DisplayName属性。当前选定的筛选器实例保存在SelectedFilter属性中 我希望用户能够从下拉列表中选择现有项目,但也可以在文本框中更改选定过滤器的名称。输入其他名称不得更改项目选择。始终选择一个筛选器,但决不能没有选择筛选器 以下是XAML代码:C# 更改组合框文本但不更改选定项,c#,wpf,combobox,C#,Wpf,Combobox,我有一个组合框,其中包含应用程序中定义的每个FilterViewModel的一个项。每个FilterViewModel都有一个包含筛选器名称的DisplayName属性。当前选定的筛选器实例保存在SelectedFilter属性中 我希望用户能够从下拉列表中选择现有项目,但也可以在文本框中更改选定过滤器的名称。输入其他名称不得更改项目选择。始终选择一个筛选器,但决不能没有选择筛选器 以下是XAML代码: <ComboBox IsEditable="True" IsTextSearc
<ComboBox
IsEditable="True" IsTextSearchEnabled="False"
ItemsSource="{Binding Filters}"
SelectedItem="{Binding SelectedFilter}"
DisplayMemberPath="DisplayName"/>
我找不到ComboBox的TextChanged事件,简单地让它保持原样并不会更改所选项目的绑定文本属性DisplayName(我本来希望如此)
我能做些什么使其按上述方式工作
背景是,此组合框用于我的应用程序的“设置”对话框,在该对话框中可以管理(创建、复制、重命名、删除)过滤器,并编辑其过滤器条件。我想保存额外的按钮和窗口或文本框来重命名过滤器,但直接提供该功能。如果您看到过滤器名称,只需单击它并键入以更改它。但是我还想使用组合框提供一个下拉选择菜单来切换过滤器。这应该允许您更改
SelectedFilter
的DisplayName
,而无需更改SelectedFilter
本身:
<ComboBox
ItemsSource="{Binding Filters}"
SelectedItem="{Binding SelectedFilter}"
DisplayMemberPath="DisplayName"
Text="{Binding SelectedFilter.DisplayName, Mode=TwoWay}"
IsEditable="True"
IsTextSearchEnabled="False"/>
太棒了!简单有效的解决方案。这里有一些代码可以选择组合框中的所有文本。它可以连接到SelectionChanged事件:非常感谢。在我的案例中,我在测试时发现了一些东西,如果IsTextSearchEnabled为true,则在更改DisplayName时SelectedFilter将更改为null,因此我在set分支的属性中添加了一个额外的检查:if(value!=null){u SelectedFilter=value;PropertyChanged(这是新的PropertyChangedEventArgs(“SelectedFilter”);}。现在它可以很好地用于我的场景,如果没有您的示例,我无法到达这里。