Aracılığıyla paylaş


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.

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 falseolarak 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.