PreviewTextInput组合框需要输入两次按Enter? (中文字符)WPF模拟输入击键

时间:2016-08-06 02:04:40

标签: c# wpf events

我有combobox文字可编辑,我使用PreviewTextInput作为活动。

我不确定这是什么称为正式,但输入combobox的文本处于变化状态,直到按下返回。这意味着按下空格键会将文本更改为中文字符,并且可以多次按空格键以获得所需的字符,直到输入被命中并且文本完成。

我尝试使用TextChanged,但是每次按下一个键时都会触发一个事件,当使用Chinnese字符时,在文本完成之前,你可以在任何地方进行8-12次或更多次击键。

此图像展示了变化的状态。在下拉列表中按空格键选项卡,直到输入按下锁定选择。在这种情况下,输入7个字符zong li以获取中文字符。

enter image description here

我可以使用PreviewTextInput解决此问题,因为当文本处于更改状态时事件不会触发。但是,按Enter键时会触发事件,但text string为空,但再次按Enter键可以将正确的信息输入text string

我的问题,

有没有办法模拟按下的回车键,这样用户只需要输入一次?或者有更好的方法来实现这一目标吗?由于这是一个WPF应用程序,我宁愿坚持使用代码。

调用方法的简单代码,该方法执行我需要它执行的所有操作。我没有看到发布方法代码的必要性,因为问题在于此行TextBoxStr = SearchNameTxtCombo.Text;在第一次输入时返回空字符串。如前所述,第二次按下将返回正确的string值。

 private void SearchNameTxtCombo_PreviewTextInput(object sender, RoutedEventArgs e)
            {            
                if (SearchNameTxtCombo.IsKeyboardFocusWithin)
                {                
                    TextBoxStr = SearchNameTxtCombo.Text;  
                    GetPartialNamesComboBox();              
                }

            }

和XAML,

    <ComboBox Name="SearchNameTxtCombo" Grid.Row="1" Grid.ColumnSpan="3"
       IsEditable="True" 
       TextBoxBase.PreviewTextInput="SearchNameTxtCombo_PreviewTextInput" 
       Grid.Column="9" VerticalAlignment="Stretch" Margin="5,5,10,5"
       DisplayMemberPath="Value" SelectedValuePath="Key" 
       SelectionChanged="SearchNameTxtCombo_SelectionChanged" 
       IsDropDownOpen="{Binding IsKeyboardFocusWithin, RelativeSource={RelativeSource Self}, Mode=OneWay}"
       ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged, Path=EmployeesNameNumberPairs}" 
       SelectedItem="{Binding UpdateSourceTrigger=PropertyChanged, Path=SelectedEmployee}">
   </ComboBox>

TextBoxBase用于XAML,因为comboboxtextbox设置为true时使用IsEditable

  

当IsEditable等于false时,ComboBox使用a   ContentPresenter显示当前选中的项目;的    IsEditable等于true TextBox 用于此目的   代替。

ComboBox.IsEditable Property

0 个答案:

没有答案