WPF组合框筛选器对第一个字符WPF C#不起作用?
基本上,我拥有的是一个wpf组合框,同时具有isTextSearchEnable和isEditable,enabled。我想允许用户输入他们想要查找的内容,并过滤组合框项目,以仅显示相关项目 如果用户在MP-1中输入密钥,则应仅显示包含这些文本的项目,而不显示不相关的项目。到目前为止,代码适用于第二个字符,但不适用于第一个字符。有什么想法或者我做错了什么? 到目前为止我掌握的代码WPF组合框筛选器对第一个字符WPF C#不起作用?,c#,wpf,visual-studio,C#,Wpf,Visual Studio,基本上,我拥有的是一个wpf组合框,同时具有isTextSearchEnable和isEditable,enabled。我想允许用户输入他们想要查找的内容,并过滤组合框项目,以仅显示相关项目 如果用户在MP-1中输入密钥,则应仅显示包含这些文本的项目,而不显示不相关的项目。到目前为止,代码适用于第二个字符,但不适用于第一个字符。有什么想法或者我做错了什么? 到目前为止我掌握的代码 public class FilterViewModel { public
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();
}
公共类FilterViewModel
{
公共IEnumerable数据源{get;set;}
公共过滤器模型()
{
数据源=新[]{“MP-10001”、“MP-10002”、“MP-10003”、“MP-10004”、“XD-20001”、“XD-20002”、“XD-20003”};
}
}
公共主窗口()
{
初始化组件();
FilterViewModel vm=新的FilterViewModel();
this.DataContext=vm;
}
私有void FilteredCmb\u KeyUp(对象发送方,KeyEventArgs e)
{
CollectionView cv=(CollectionView)CollectionViewSource.GetDefaultView(cmbBox.ItemsSource);
cv.Filter=((o)=>
{
if(String.IsNullOrEmpty(cmbBox.Text))返回true;
其他的
{
if(((字符串)o).Contains(cmbBox.Text))返回true;
否则返回false;
}
});
cv.Refresh();
}
isTextSearchEnable=“True”的默认行为是选择第一个部分匹配,因此您的筛选器匹配整个项目,并为所有其他条目返回false。看一看xaml,您似乎从以下问题获得了代码:您可以使用AutoCompleteBox,一个包含搜索和过滤高级功能的漂亮控件,安装此软件包:
PM> Install-Package WPFToolkit
下面是一个很好的教程:
对于下载链接,它已从codeplex中删除,因此您可以在此处找到它:
或者xceed拥有强大的控制力:
Install-Package Extended.Wpf.Toolkit
我可以参考一下使用这个软件包的例子吗?这里有一个完整的教程:我试图通过控制台安装这个软件包,但是没有。nstall程序包:在第1行中找不到程序包“WPFToolkit”:字符:1+安装程序包WPFToolkit+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~类别信息:未指定:(:)[Install Package],异常+FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlet.InstallPackageCommand知道我为什么会出现此错误吗?是的,我知道了,第一步是安装该软件包,我通过软件包管理器搜索找不到它,通过控制台也无法检查此链接:为什么我搜索“P”它返回多个结果?因为在这种情况下,您的过滤器工作正常。字符串包含字母P,但内置的TextSearch没有找到匹配项,因为没有任何字符串以P开头
Install-Package Extended.Wpf.Toolkit