在我的WPF应用程序中,我使用了一个组合框.当用户想要选择一个项目时,他可以输入字母,组合框跳转到以这些字母开头的下一个条目.如果用户停止输入并在一定延迟后再次启动,则组合框假定用户已经开始使用新单词.嗯,这是通常的ComboBox行为,没有什么特别的......问题是,我们的一些用户是慢速打字机.假设用户正在搜索新单词,是否有办法增加在没有组合框的情况下输入两个字母之间的时间?希望你知道我的意思......
您可以全力以赴并推出您自己的可过滤组合框。查看此代码,看看它是否有帮助。
XAML:
<ComboBox x:Name="myComboBox" TextBoxBase.TextChanged="myComboBox_TextChanged" DisplayMemberPath="myDisplay" IsEditable="True" StaysOpenOnEdit="True" SelectionChanged="myComboBox_SelectionChanged" />
Run Code Online (Sandbox Code Playgroud)
然后,在引擎盖下:
ObservableCollection<myType> myCollection;
public ICollectionView cvs { get; set; }
public MyWindow()
{
InitializeComponent();
myCollection = new ObservableCollection<myType>();
cvs = CollectionViewSource.GetDefaultView(myCollection);
myComboBox.ItemsSource = cvs;
cvs.Filter = FilterOut;
}
private void myComboBox_TextChanged(object sender, TextChangedEventArgs e)
{
cvs.Refresh();
}
private bool FilterOut(object input)
{
myType item = (myType)input;
return ( string.IsNullOrEmpty(myComboBox.Text) || item.myDisplay.Contains(myComboBox.Text));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |