组合框:以mvvm方式获取文本和选定项目

时间:2018-04-06 08:40:30

标签: wpf mvvm combobox

组合框是可编辑的,因此用户也可以编写。我有两个用例:

  1. 当用户写入时,以Lostfocus方式从组合框获取文本 盒子里的东西,当他按下" Tab"然后我想要文本 从组合框中,我在itemsSource列表中添加了值。
  2. 当用户从组合框下拉列表中进行选择时,我希望如此 一旦他选择了它就选择了这个项目,这次我不这样做 我希望以Lostfocus方式拥有它,但有点像 PropertyChanged方式。
  3. 我尝试了下面给出的代码:

     <ComboBox Margin="3" x:Name="Combobox" SelectedItem="{Binding SelectedPath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Text="{Binding PathLocation, UpdateSourceTrigger=LostFocus, ValidatesOnNotifyDataErrors=True}" IsTextSearchEnabled="True" VerticalContentAlignment="Center" ItemsSource="{Binding SelectedPaths}" IsEditable="True" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Stretch"/>
    

    当应用程序启动时,第一次工作正常,但在一些交互之后,问题就出现了。当用户开始在组合框中键入时,组合框的SelectedItem属性触发,这与我在第一个用例中的想法相反。

    简而言之:当用户在组合框中写入内容时,我希望以Lostfocus的方式使用它,当他从组合框的下拉列表中进行选择时,我希望以PropertyChanged方式使用它。

    如果需要更多详细信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

我删除了&#34; IsTextSearchEnabled&#34;财产,但它也没有工作,然后我才知道&#34; IsTextSearchEnabled&#34;默认情况下,Comobobox的属性为true,这导致组合框建议的某些值在我的属性中设置。一旦我做了#34; IsTextSearchEnabled&#34;如果错误,它工作正常。