Performansı İyi hale Getirme: Diğer Öneriler

Bu konu başlığı, WPF Uygulama Performansını İyi hale getirme konu başlıklarını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 Brush veya Fill ayarlamak için bir Stroke kullandığınızda, öğenin Brush.Opacity özelliğini ayarlamak yerine Opacity değerini ayarlamak daha iyidir. Bir öğenin Opacity özelliğini değiştirmek WPF'nin geçici bir yüzey oluşturmasına neden olabilir.

NavigationWindow nesnesi Window'den türetilir ve öncelikle NavigationService ile günlüğü bütünleştirerek içerik gezinme desteği ile genişletir. Tekdüzen kaynak tanımlayıcısı (URI) veya nesne belirterek NavigationWindow 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 nesnesinin, 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 oluşturma süresi potansiyel olarak yüksektir.

Bir nesne kullanarak gezindiğinizde, kayıt defteri nesnenin tüm görsel ağacını saklar. Bu, sayfayı her tekrar ziyaret ettiğinizde yeniden oluşturulması gerekmeden anında görüntülendiği anlamına gelir. Bu durumda günlük depolama maliyeti yüksektir, ancak sayfayı yeniden oluşturma süresi düşüktür.

NavigationWindow nesnesini kullandığınızda günlük oluşturma desteğinin 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 Çarpışma 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 halindeyken geçerlidir. Bu yüzeylerde isabet testi gerektirmezseniz isabet testlerini devre dışı bırakın. UIElement türetilen nesneler, IsHitTestVisible özelliğini falseolarak ayarlayarak isabet testini devre dışı bırakabilir.

CompositionTarget.Rendering Olayı

CompositionTarget.Rendering olayı WPF'nin sürekli animasyon oluşturmasına neden olur. Bu olayı kullanırsanız her fırsatta ayırabilirsiniz.

ScrollBarVisibility=Auto kullanmaktan kaçının

Mümkün olduğunda, ScrollBarVisibility.Auto ve HorizontalScrollBarVisibility özellikleri için VerticalScrollBarVisibility değerini kullanmaktan kaçının. Bu özellikler RichTextBox, ScrollViewerve TextBox nesneleri için ve ListBox nesnesi için ekli özellik olarak tanımlanır. Bunun yerine, ScrollBarVisibilityDisabled, Hiddenveya Visibleolarak ayarlayın.

Auto değeri, 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ğerini yüzlerce satır metin içeren bir ListBox yerine 30 öğeden oluşan bir TextBox 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 bakınız