我有一个希伯来语日历应用程序,其中每一天都是一个 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"/>
使滚动速度超快。
一些注意事项:
Glyphs
不支持绑定(bind),所以我不得不给每个字形命名并在后面的代码中更新它们,如下所示:HebrewDate.UnicodeString = zman.HebrewDate;
Glyphs
没有布局功能,因此希伯来语文本向后显示。我不得不用 reversing function 预处理希伯来语字符串.即使在反转之后,希伯来元音点也未对齐,因此我为那些使用元音的字符串保留了Labels
。
关于c# - 文本更新减慢应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6910689/