Performansı İyileştirme: Diğer Öneriler
Bu konu, bölümünde yer almayan konular kapsamında ele alınanlara ek olarak performans önerileri sağlar.
Bu konu aşağıdaki bölümleri içermektedir:
Fırçalar üzerinde opaklık ve öğeler üzerinde opaklık
Bir Brush öğesini veya bir öğesini ayarlamak için Fill kullandığınızda Stroke , Brush.Opacity öğesinin özelliğinin ayarı yerine değeri ayarlamak daha iyidir Opacity . Bir öğenin özelliğini değiştirmek Opacity , WPF 'in geçici bir yüzey oluşturmasına neden olabilir.
Nesneye gezinti
NavigationWindowNesnesi öğesinden türetilir Window ve bu, temelde ve günlüğü kullanarak içerik gezintisi desteğiyle genişletir NavigationService . NavigationWindowBir Tekdüzen Kaynak tanımlayıcısı (URI) veya bir nesnesi belirterek ' nin istemci alanını güncelleştirebilirsiniz. Aşağıdaki örnek her iki yöntemi göstermektedir:
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, bu pencerede kullanıcının gezinti geçmişini kaydeden bir günlüğü vardır. Günlüğün amaçlarından biri, kullanıcıların kendi adımlarını yeniden izlemesine izin vermelidir.
Tekdüzen Kaynak tanımlayıcısı (URI) kullanarak gittiğinizde, günlük yalnızca Tekdüzen Kaynak tanımlayıcısı (URI) başvurusunu depolar. Bu, sayfayı her ziyaret ettiğiniz zaman dinamik olarak yeniden oluşturulduğu ve sayfanın karmaşıklığına bağlı olarak zaman alıcı olabilen bir anlamına gelir. Bu durumda, günlük depolama maliyeti düşüktür, ancak sayfanın edilmeyen süresi yüksek olabilir.
Bir nesne kullanarak gittiğinizde, günlük nesnenin tüm görsel ağacını depolar. Bu, sayfayı her ziyaret ettiğiniz zaman yeniden yapılandırılması gerekmeden hemen işlediğini anlamına gelir. Bu durumda, günlük depolama maliyeti yüksektir, ancak sayfanın edilmeyen süresi düşüktür.
NavigationWindowNesnesini kullandığınızda, günlüğe kaydetme desteğinin uygulamanızın performansını nasıl etkilediğini göz önünde bulundurmanız gerekir. Daha fazla bilgi için bkz. gezintiye genel bakış.
Büyük 3B yüzeyler üzerinde isabet testi
Büyük 3B yüzeyler üzerinde isabet testi, CPU tüketimi açısından çok performanslı, yoğun bir işlemdir. Bu, 3B Yüzey animasyon eklendiğinde özellikle doğrudur. Bu yüzeyler üzerinde isabet testi gerektirmiyorsa, isabet sınamasını devre dışı bırakın. Öğesinden türetilen nesneler UIElement , özelliğini olarak ayarlayarak isabet sınamasını devre dışı bırakabilir IsHitTestVisiblefalse .
Kompozisyontiontarget. Rendering olayı
Bu CompositionTarget.Rendering olay WPF 'in sürekli olarak animasyon almasına neden olur. Bu olayı kullanırsanız, her fırsat üzerinde ayırın.
ScrollBarVisibility = Auto kullanmaktan kaçının
Mümkün olduğunda, ScrollBarVisibility.Auto ve özellikleri için değeri kullanmaktan kaçının HorizontalScrollBarVisibilityVerticalScrollBarVisibility . Bu özellikler RichTextBox ,, ScrollViewer , ve nesneleri için TextBox ve iliştirilmiş bir özellik olarak, nesnesi için tanımlanır ListBox . Bunun yerine, ScrollBarVisibility veya olarak ayarlayın DisabledHiddenVisible .
AutoDeğer, boşluk sınırlı olduğunda ve kaydırma çubuklarının yalnızca gerektiğinde görüntülenmesi gerektiği durumlar için tasarlanmıştır. Örneğin, bu ScrollBarVisibility değeri, ListBoxTextBox yüzlerce satırlık metin içeren bir 30 öğeyle kullanmak yararlı olabilir.
Başlangıç saatini azaltmak için yazı tipi önbellek hizmetini yapılandırın
WPF yazı tipi önbellek hizmeti, WPF uygulamaları arasında yazı tipi verilerini paylaşır. Hizmet zaten çalışmıyorsa, çalıştırdığınız ilk WPF uygulaması bu hizmeti başlatır. Windows Vista kullanıyorsanız, WPF uygulamalarının ilk başlangıç zamanını azaltmak için "Windows Presentation Foundation (WPF) yazı tipi önbelleği 3.0.0.0" hizmetini "el ile" (varsayılan) "otomatik (gecikmeli başlatma)" olarak ayarlayabilirsiniz.