Performansı İyileştirme: Diğer Öneriler
Bu konu, WPF Uygulama Performansını İyi hale getirme bölümündeki konuların kapsamına eklenenlere ek olarak performans önerileri sağlar.
Bu konu, aşağıdaki bölümleri içerir:
Fırçalarda Opaklık ve Öğelerde Opaklık Karşılaştırması
Bir öğenin veya değerini ayarlamak Fill için bir kullandığınızdaBrush, öğenin özelliğini ayarlamak yerine değeri ayarlamak OpacityBrush.Opacity daha iyidir.Stroke Bir öğenin özelliğini değiştirmek WPF'nin Opacity geçici bir yüzey oluşturmasına neden olabilir.
Nesneye Gezinti
Nesnesinden NavigationWindowWindow türetilir ve içerik gezintisi desteğiyle genişletilir, öncelikle NavigationService toplama ve günlük. tekdüzen kaynak tanımlayıcısı NavigationWindow (URI) veya bir nesne belirterek istemci alanını güncelleştirebilirsiniz. Aşağıdaki örnekte her iki yöntem de gösterilmektedir:
private void buttonGoToUri(object sender, RoutedEventArgs args)
{
navWindow.Source = new Uri("NewPage.xaml", UriKind.RelativeOrAbsolute);
}
private void buttonGoNewObject(object sender, RoutedEventArgs args)
{
NewPage nextPage = new NewPage();
nextPage.InitializeComponent();
navWindow.Content = nextPage;
}
Private Sub buttonGoToUri(ByVal sender As Object, ByVal args As RoutedEventArgs)
navWindow.Source = New Uri("NewPage.xaml", UriKind.RelativeOrAbsolute)
End Sub
Private Sub buttonGoNewObject(ByVal sender As Object, ByVal args As RoutedEventArgs)
Dim nextPage As New NewPage()
nextPage.InitializeComponent()
navWindow.Content = nextPage
End Sub
Her NavigationWindow nesnenin, kullanıcının gezinti geçmişini bu pencerede kaydeden bir günlüğü vardır. Günlüğün amaçlarından biri, kullanıcıların adımlarını yeniden takip etmelerine izin vermektir.
Tekdüzen kaynak tanımlayıcısı (URI) kullanarak gezindiğinizde, günlük yalnızca tekdüzen kaynak tanımlayıcısı (URI) başvuruyu depolar. Başka bir deyişle, sayfayı her ziyaret ettiğinizde dinamik olarak yeniden oluşturulur ve bu da sayfanın karmaşıklık düzeyine bağlı olarak zaman alabilir. Bu durumda günlük depolama maliyeti düşüktür, ancak sayfayı yeniden kullanma süresi büyük olasılıkla yüksektir.
Bir nesne kullanarak gezindiğinizde, günlük nesnenin görsel ağacının tamamını depolar. Bu, sayfayı her ziyaret ettiğinizde yeniden oluşturulması gerekmeden hemen işlendiği anlamına gelir. Bu durumda günlük depolama maliyeti yüksektir, ancak sayfayı yeniden kullanma süresi düşüktür.
nesnesini kullandığınızda, günlük desteğinin NavigationWindow uygulamanızın performansını nasıl etkilediğini aklınızda bulundurmanız gerekir. Daha fazla bilgi için bkz . Gezintiye Genel Bakış.
Büyük 3B Yüzeylerde İsabet Testi
Büyük 3B yüzeylerde isabet testi, CPU tüketimi açısından çok yoğun performans gerektiren bir işlemdir. Bu durum özellikle 3B yüzey animasyon oluştururken geçerlidir. Bu yüzeylerde isabet testi gerektirmezseniz isabet testlerini devre dışı bırakın. öğesinden UIElement türetilen nesneler, özelliğini false
olarak ayarlayarak isabet testini IsHitTestVisible devre dışı bırakabilir.
CompositionTarget.Rendering Olayı
olayı WPF'nin CompositionTarget.Rendering sürekli animasyon eklemesine neden olur. Bu olayı kullanırsanız her fırsatta ayırabilirsiniz.
ScrollBarVisibility=Auto kullanmaktan kaçının
Mümkün olduğunda ve VerticalScrollBarVisibility
özellikleri için HorizontalScrollBarVisibility
değerini kullanmaktan ScrollBarVisibility.Auto kaçının. Bu özellikler , ScrollViewerve TextBox nesneleri için RichTextBoxve nesnesi için ListBox ekli özellik olarak tanımlanır. Bunun yerine , veya HiddenVisibleolarak DisabledayarlayınScrollBarVisibility.
Değer Auto , alanın sınırlı olduğu ve kaydırma çubuklarının yalnızca gerektiğinde görüntülenmesi gereken durumlar için tasarlanmıştır. Örneğin, bu ScrollBarVisibility değeri yüzlerce satırlık metin ListBox yerine 30 öğeden oluşan bir TextBox değerle kullanmak yararlı olabilir.
Başlatma Süresini Azaltmak için Yazı Tipi Önbellek Hizmetini Yapılandırma
WPF Yazı Tipi Önbelleği hizmeti, WPF uygulamaları arasında yazı tipi verilerini paylaşır. Çalıştırdığınız ilk WPF uygulaması, hizmet zaten çalışmıyorsa bu hizmeti başlatır. Windows Vista kullanıyorsanız, WPF uygulamalarının ilk başlatma süresini azaltmak için "Windows Presentation Foundation (WPF) Yazı Tipi Önbelleği 3.0.0.0" hizmetini "El ile" (varsayılan) yerine "Otomatik (Gecikmeli Başlangıç)" olarak ayarlayabilirsiniz.
Ayrıca bkz.
.NET Desktop feedback