我有一个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有一个下拉选择菜单来切换过滤器。
答案 0 :(得分:3)
这应该允许您更改DisplayName
SelectedFilter
而不更改SelectedFilter
本身:
<ComboBox
ItemsSource="{Binding Filters}"
SelectedItem="{Binding SelectedFilter}"
DisplayMemberPath="DisplayName"
Text="{Binding SelectedFilter.DisplayName, Mode=TwoWay}"
IsEditable="True"
IsTextSearchEnabled="False"/>