c# - 文本更新减慢应用程序

标签 c# wpf optimization glyph

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

有什么方法可以加快速度吗? MS Outlook 似乎有相当数量的文本字段,而且滚动很流畅。

最佳答案

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 不支持绑定(bind),所以我不得不给每个字形命名并在后面的代码中更新它们,如下所示:

    HebrewDate.UnicodeString = zman.HebrewDate;
    
  2. Glyphs 没有布局功能,因此希伯来语文本向后显示。我不得不用 reversing function 预处理希伯来语字符串.即使在反转之后,希伯来元音点也未对齐,因此我为那些使用元音的字符串保留了 Labels

关于c# - 文本更新减慢应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6910689/

相关文章:

c# - 模拟流以读取字节[]

c# - Windows 10 专业版 1803 蓝牙配置文件访问

wpf - XAML 编辑选项

c# - wpf中的椭圆形按钮

actionscript-3 - 分析 ActionScript-3 代码

javascript - 使用 Javascript 优化一个巨大的无序列表

c# - 在 .NET Core 控制台应用程序中通过依赖注入(inject)访问配置

C# 在添加的线程中触发事件

c# - 为什么基本页面不提供 OnNavigatedTo() 事件?

c++ - 打开 g++ 优化会导致段错误 - 我不明白