[英]WPF Combo box filter not working on the first character WPF C#?
基本上我所擁有的是一個 wpf 組合框,同時啟用了 isTextSearchEnable 和 isEditable。 我想允許使用鍵入他們想要查找的內容並過濾組合框項目以僅顯示相關項目。
如果用戶在 MP-1 中鍵入,它應該只顯示包含這些文本的項目而不顯示不相關的項目。 到目前為止,該代碼適用於第二個字符,但不適用於第一個字符。 任何想法或我在這里做錯了什么?
我到目前為止的代碼,
public class FilterViewModel
{
public IEnumerable<string> DataSource { get; set; }
public FilterViewModel()
{
DataSource = new[] { "MP-10001", "MP-10002", "MP-10003", "MP-10004", "XD-20001", "XD-20002", "XD-20003" };
}
}
public MainWindow()
{
InitializeComponent();
FilterViewModel vm = new FilterViewModel();
this.DataContext = vm;
}
private void FilteredCmb_KeyUp(object sender, KeyEventArgs e)
{
CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(cmbBox.ItemsSource);
cv.Filter = ((o) =>
{
if (String.IsNullOrEmpty(cmbBox.Text)) return true;
else
{
if (((string)o).Contains(cmbBox.Text)) return true;
else return false;
}
});
cv.Refresh();
}
<Grid>
<ComboBox x:Name="cmbBox" HorizontalAlignment="Left" Margin="78,36,0,0" VerticalAlignment="Top" Width="362" IsEditable="True" IsTextSearchEnabled="True" Height="47" KeyUp="FilteredCmb_KeyUp" StaysOpenOnEdit="True" IsDropDownOpen="True" ItemsSource="{Binding DataSource}"/>
</Grid>
isTextSearchEnable="True" 的默認行為是選擇第一個部分匹配,因此您的過濾器匹配整個項目並為所有其他條目返回 false。 看看 xaml 關於你似乎已經從以下問題獲得代碼的問題: 簡單 WPF combobox 過濾器
您可以使用 AutoCompleteBox,包含搜索和過濾高級功能的漂亮控件,安裝此 Package:
PM> Install-Package WPFToolkit
這是一個很好的教程: https://www.broculos.net/2014/04/wpf-autocompletebox-autocomplete-text.html
對於它從 codeplex 中刪除的下載鏈接,您可以在這里找到它: https://github.com/dotnetprojects/WpfToolkit
或者 xceed 有一個很好的控制:
Install-Package Extended.Wpf.Toolkit
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.