WPF Editable Combobox在键入时不会更改SelectedValue

时间:2014-08-21 07:51:00

标签: wpf combobox

我定义了一个Combobox,其SelectedValue绑定到视图模型VM上的属性.SelectedServiceTypeId

<ComboBox Name="ServiceTypeComboBox"
          IsEditable="True"
          Grid.Row="1"
          Grid.Column="1"
          Margin="5"
          DisplayMemberPath="ServiceTypeName"
          ItemsSource="{Binding ServiceTypes,Mode=TwoWay}"
          SelectedValue="{Binding SelectedServiceTypeId, Mode=TwoWay}"
          SelectedValuePath="ServiceTypeId" 
          Loaded="ServiceTypeComboBox_Loaded"
          />

当用户在下拉菜单中选择项目时,该值会正确更新,但会导致组合框IsEditable,用户可以键入他想要的任何内容,而不是ItemSource中的值。在这种情况下,SelectedValue不会改变。

我需要做的是当SelectedValue属于ItemsSource中的按钮时启用按钮。

你有什么提示吗?

2 个答案:

答案 0 :(得分:2)

你的wpf组合框有一个属性“Text”,其中包含用户输入的文本。您必须编写一些代码来检查输入的文本是否与您的itemssource中的任何内容匹配。

答案 1 :(得分:0)

<Button Content="Click">
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="IsEnabled" Value="True"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=ServiceTypeComboBox, Path=SelectedValue}" Value="{x:Null}">
                        <Setter Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>