2011-08-02 34 views
1

我有一個希伯來日曆應用程序,其中每天都是一個UserControl。在該控件中,我有6個標籤用於英語日期,希伯來語日期,猶太節假日和其他一些用戶定義的數據。滾動時,標籤的內容隨着UserControl的日期值在一週內上升或下降而改變。滾動顯然比Microsoft Outlook日曆慢,並且分析顯示時間最長的部分正在更新標籤內容,這不是由我的代碼處理的。文本更新速度放慢應用程序

有什麼方法可以讓這個更快? MS Outlook似乎有相當數量的文本字段,並且滾動是平滑的。

回答

3

TextBlocks並不明顯快Labels,但Glyphs給我的日曆揮鞭。

與此

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

更換此

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

做出滾動超級快。

一些注意事項:

  1. Glyphs不支持綁定,所以我只好給每人一個名稱和代碼更新他們的身後,就像這樣:

    HebrewDate.UnicodeString = zman.HebrewDate; 
    
  2. Glyphs唐沒有佈局功能,所以希伯來文文本出來了。我不得不用reversing function預處理希伯來語字符串。即使在倒轉之後,希伯來元音點出現錯位,所以我保留了Labels這些使用元音的字符串。

+0

已經由希伯來文的MS Word的處理(文字方向任意扭轉_within相同word_)幾年前帶來眼淚,我被擊倒了** **高超的文字方向的管理Visual Studio編輯器。感謝並感謝MicroSoft的改進! –

1

我無法確定,但有可能MS Outlook的編碼速度比WPF快,可能使用DirectX來快速顯示圖形。

否則,我可能會建議減少一次更新綁定的數量,我會建議使用一個額外的線程逐漸更新標籤,因爲當有空閒週期而不是一次全部更新時,這可能會導致您的口吃。