【问题标题】:Text update slowing down app文本更新减慢应用程序
【发布时间】:2011-08-22 19:05:08
【问题描述】:

我有一个希伯来日历应用程序,其中每一天都是一个用户控件。我在该控件中有 6 个标签,分别用于英语日期、希伯来日期、犹太节日和其他一些用户定义的数据。滚动时,标签的内容会随着 UserControl 的日期值一周上升或下降而变化。滚动速度明显慢于 Microsoft Outlook 日历,并且分析显示花费时间最长的部分是更新标签内容,这不是我的代码处理的。

有什么方法可以让这一切变得更快吗? MS Outlook 似乎有相当数量的文本字段,并且滚动很流畅。

【问题讨论】:

    标签: c# wpf optimization glyph


    【解决方案1】:

    TextBlocks 没有明显比Labels 快,但Glyphs 给了我的日历鞭打。

    替换这个

    <TextBlock Padding="5"
               FontFamily="Narkisim"
               FontWeight="Bold"
               FontSize="20"
               Text="{Binding HebrewDate}"/>
    

    有了这个

    <Glyphs Name="HebrewDate"
            Margin="5"
            StyleSimulations="BoldSimulation"
            FontUri = "/Fonts/nrkis.ttf"
            FontRenderingEmSize = "20"
            UnicodeString = "5771 ןושח ה"
            Fill = "Black"/>
    

    让滚动速度超级快。

    一些注意事项:

    1. Glyphs 不支持绑定,所以我不得不给每个人一个名字并在后面的代码中更新它们,如下所示:

      HebrewDate.UnicodeString = zman.HebrewDate;
      
    2. Glyphs 没有布局功能,因此希伯来文文本出现倒退。我必须用reversing function 预处理希伯来语字符串。即使在反转之后,希伯来语元音点还是没有对齐,所以我为那些使用元音的字符串保留了Labels

    【讨论】:

    • 几年前被 MS Word 处理希伯来语文本(文本方向任意反转在同一个词内)弄得流泪,我被 superb 在 Visual Studio 编辑器中管理文本方向。致谢并感谢 MicroSoft 的改进!
    【解决方案2】:

    我不能确定,但​​ MS Outlook 的编码可能比 WPF 更快,也许是使用 DirectX 来快速显示图形。

    否则我可能会建议减少一次更新绑定的数量,我建议使用额外的线程在有空闲周期时逐渐更新标签,而不是一次全部更新,这可能会导致您的卡顿。

    【讨论】:

      【解决方案3】:

      为了配合前面的答案,我推荐后台工作人员。在滚动期间执行的最耗时的操作使用后台工作程序。

      http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-06
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多