我有一个TextBox和ListBox.用户可以从TextBox中搜索ListBox元素.
ListBox绑定到CollectionViewSource.
CollectionViewSource具有Filter事件处理程序,可根据用户输入TextBox的文本过滤元素.
我的要求是突出显示用户在ListBoxItem元素的TextBlock中输入的文本.
我正在考虑将TextBlock分成几个Runs对象,并修改需要突出显示的Run对象的Background属性.
我认为不可能使用DataTemplates.
有没有简单的方法来实现这一目标?
谢谢!
我有大约35,000个字符串的List集合
典型字符串如下所示:
"<i>füüs</i>ampri tähis;lüh ld-st<i>anno</i>, aastal;<i>maj</i> lüh pr-st<i>argent</i>, raha (kursisedelitel)"
Run Code Online (Sandbox Code Playgroud)
基本上这个字符串包含爱沙尼亚语中的一堆单词:)
我需要允许用户对35,000个字符串执行RegExp搜索
如果我使用/ab.*/表达式执行搜索,则搜索只需不到一秒钟
如果我使用/.*ab/表达式执行搜索,则搜索大约需要10秒
我的问题是:如何更快地进行二次搜索(少于1.5秒)?
非常感谢你
当用户尝试在我的应用中播放视频时,如何在iPad上使用iOS9中的Swift禁用画中画按钮/模式?
我有TextBox和ListBox与一堆元素.
TextBox有KeyDown事件处理程序,其背后的想法是允许用户按下向上和向下键在ListBox内滚动,同时焦点在TextBox上.
当用户多次按下"向下键"时,所选元素成为屏幕上的最后一个可见元素.如果用户已经到达屏幕上可见列表元素的底部,我希望他在所选元素之后也看到下一个元素.
我有按特定顺序填充的List集合(要求是,此顺序无法更改).此列表包含实体类型对象.
在列表的初始填充之后,我需要插入更多来自另一个数据源的对象.需要将这些对象插入特定位置,以便排序正确.
例如,如果初始列表具有以下元素
初始填充后我想插入"ABB"元素,需要插入3到4之间.
目前,我有以下方法为新元素找到正确的位置.
private static int FindPositionForArticle(string word)
{
string key = word.ToLower();
for (int i = word.Length; i >= 0; i--)
{
if(i < word.Length)
key = key.Remove(i, 1);
int pos = 0;
int insertPos = 0;
foreach(ArticleEntity article in list)
{
if(article.Text.ToLower().StartsWith(key))
insertPos = pos;
else if (!article.Text.ToLower().StartsWith(key) && insertPos > 0)
return insertPos++;
pos++;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这种方法背后的目的是:
拿出需要插入的"单词",尝试找到与"单词"同名的元素的位置
如果未找到任何内容,请从"单词"中删除最后一个字符并再次搜索.
重复删除最后一个字符,直到找到最佳位置.
不幸的是我的方法有bug(实现不正确).目前我的方法表明最佳位置为0,这是完全错误的.
如果您想使用我的示例代码,您可以在以下位置下载:
http://dl.getdropbox.com/u/204110/FindPosition.cs.txt
先感谢您.
.net ×4
c# ×3
listbox ×2
wpf ×2
algorithm ×1
avkit ×1
highlighting ×1
ios ×1
ios9 ×1
list ×1
listboxitem ×1
optimization ×1
performance ×1
regex ×1
sorting ×1
swift ×1
xaml ×1