小编Dan*_*rik的帖子

WPF列表框突出显示ListBoxItem元素的一部分

我有一个TextBox和ListBox.用户可以从TextBox中搜索ListBox元素.

ListBox绑定到CollectionViewSource.

CollectionViewSource具有Filter事件处理程序,可根据用户输入TextBox的文本过滤元素.

我的要求是突出显示用户在ListBoxItem元素的TextBlock中输入的文本.

我正在考虑将TextBlock分成几个Runs对象,并修改需要突出显示的Run对象的Background属性.

我认为不可能使用DataTemplates.

有没有简单的方法来实现这一目标?

谢谢!

.net wpf xaml listbox highlighting

3
推荐指数
1
解决办法
6373
查看次数

.NET RegExp引擎搜索性能优化

我有大约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秒)?

非常感谢你

.net c# regex optimization performance

2
推荐指数
1
解决办法
1146
查看次数

如何禁用默认视频播放器的画中画模式

当用户尝试在我的应用中播放视频时,如何在iPad上使用iOS9中的Swift禁用画中画按钮/模式?

ios swift avkit ios9

2
推荐指数
1
解决办法
2106
查看次数

WPF列表框显示SelectedItem之后的下一个元素

我有TextBox和ListBox与一堆元素.

TextBox有KeyDown事件处理程序,其背后的想法是允许用户按下向上和向下键在ListBox内滚动,同时焦点在TextBox上.

当用户多次按下"向下键"时,所选元素成为屏幕上的最后一个可见元素.如果用户已经到达屏幕上可见列表元素的底部,我希望他在所选元素之后也看到下一个元素.

.net c# wpf listbox listboxitem

1
推荐指数
1
解决办法
2751
查看次数

找到列表中元素的最佳位置

我有按特定顺序填充的List集合(要求是,此顺序无法更改).此列表包含实体类型对象.

在列表的初始填充之后,我需要插入更多来自另一个数据源的对象.需要将这些对象插入特定位置,以便排序正确.

例如,如果初始列表具有以下元素

  1. AAA
  2. AAB
  3. AAC
  4. ACC
  5. ADA

初始填充后我想插入"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)

这种方法背后的目的是:

  1. 拿出需要插入的"单词",尝试找到与"单词"同名的元素的位置

  2. 如果未找到任何内容,请从"单词"中删除最后一个字符并再次搜索.

  3. 重复删除最后一个字符,直到找到最佳位置.

不幸的是我的方法有bug(实现不正确).目前我的方法表明最佳位置为0,这是完全错误的.

如果您想使用我的示例代码,您可以在以下位置下载:

http://dl.getdropbox.com/u/204110/FindPosition.cs.txt

先感谢您.

.net c# sorting algorithm list

0
推荐指数
1
解决办法
2833
查看次数