WPF Sürüm 4.5'te Yenilikler

Bu konu, Windows Presentation Foundation (WPF) sürüm 4.5'te yeni ve geliştirilmiş özellikler hakkında bilgi içerir.

Bu konu aşağıdaki bölümleri içermektedir:

Şerit denetimi

WPF 4.5, Hızlı Erişim Araç Çubuğu, Uygulama Menüsü ve Ribbon sekmeleri barındıran bir denetimle birlikte birlikte görüntülenir. Daha fazla bilgi için bkz. Şerit'e Genel Bakış.

Büyük grup veri kümeleri görüntülenirken performans iyileştirildi

Kullanıcı arabirimi sanallaştırması, ekranda hangi öğelerin görünür olduğunu temel alarak daha fazla sayıda veri öğelerinden kullanıcı arabirimi (UI) öğelerinin bir alt kümesi oluşturulur. , VirtualizingPanel gruplanmış IsVirtualizingWhenGrouping veriler için UI Sanallaştırmayı sağlayan ekli özelliği tanımlar. Verileri gruplama hakkında daha fazla bilgi için bkz. Nasıl kullanılır: XAML'de Görünüm Kullanarak Verileri Sıralama ve Gruplama. Grup eklenmiş verileri sanallaştırma hakkında daha fazla bilgi için ekli IsVirtualizingWhenGrouping özelliğine bakın.

VirtualizingPanel için yeni özellikler

  1. Gibi bir , VirtualizingPanel ekli özelliği kullanarak VirtualizingStackPanel kısmi öğeleri görüntüp ScrollUnit görüntülemez belirtebilirsiniz. olarak ScrollUnitItem ayarlanırsa, VirtualizingPanel yalnızca tamamen görünür olan öğeleri görüntüler. olarak ScrollUnitPixel ayarlanırsa, VirtualizingPanel kısmen görünür öğeleri görüntüler.

  2. Ekli özelliği kullanarak sanalleştirilen görünümport'undan önce ve sonra VirtualizingPanel önbelleğin boyutunu CacheLength belirtebilirsiniz. Önbellek, öğelerin sanallaştırılmayacak görünüm açısının üzerindeki veya altındaki alan miktarıdır. Görünüme kaydırıldıklarından kullanıcı arabirimi öğeleri oluşturmaktan kaçınmak için önbellek kullanmak performansı geliştirebilir. Uygulamanın işlem sırasında yanıt vermemeye devam edecek şekilde önbellek daha düşük bir önceliğe sahip olur. VirtualizingPanel.CacheLengthUnitözelliği tarafından kullanılan ölçüm birimini VirtualizingPanel.CacheLength belirler.

Statik özelliklere bağlama

Veri bağlamanın kaynağı olarak statik özellikleri kullanabilirsiniz. Veri bağlama altyapısı, statik bir olay ortaya çıkarsa özelliğin değerinin ne zaman değişmesi olduğunu tanır. Örneğin, sınıfı adlı statik bir özellik tanımladığı, değişikliklerin değeri olduğunda SomeClass ortaya çıkar statik bir olay MyPropertySomeClassMyProperty tanımlayabilir. Statik olay aşağıdaki imzalardan birini kullanabilir.

  • public static event EventHandler MyPropertyChanged;

  • public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;

İlk durumda sınıfının, olay işleyiciye geçen PropertyName adlı statik bir olayı ortaya çıkar olduğunu EventArgs unutmayın. İkinci durumda sınıfı, olay işleyiciye geçen StaticPropertyChanged adlı statik bir olayı ortaya PropertyChangedEventArgs çıkarır. Statik özelliği uygulayan bir sınıf, iki yöntemden birini kullanarak özellik değiştirme bildirimlerinin yükseltilmesi için seçim olabilir.

Kullanıcı Arabirimi Olmayan İş Parçacıklarında Koleksiyonlara Erişme

WPF, koleksiyonu oluşturan iş parçacıklarının dışında veri koleksiyonlarına erişmenizi ve bu koleksiyonları değiştirmenizi sağlar. Bu, veritabanı gibi bir dış kaynaktan veri almak ve ui iş parçacığında verileri görüntülemek için bir arka plan iş parçacığını kullanmana olanak sağlar. Koleksiyonu değiştirmek için başka bir iş parçacığı kullanarak kullanıcı arabiriminiz kullanıcı etkileşimine yanıt verir.

Verileri zaman uyumlu ve zaman uyumsuz olarak doğrulama

Arabirimi, INotifyDataErrorInfo veri varlığı sınıflarını özel doğrulama kuralları uygulayacak ve doğrulama sonuçlarını zaman uyumsuz olarak ortaya çıkaracak şekilde sağlar. Bu arabirim ayrıca özel hata nesnelerini, özellik başına birden çok hatayı, çapraz özellik hatalarını ve varlık düzeyi hataları destekler. Daha fazla bilgi için bkz. INotifyDataErrorInfo.

Veri bağlama kaynağını otomatik olarak güncelleştirme

Bir veri kaynağını güncelleştirmek için bir veri bağlaması kullanırsanız, özelliği kaynak güncelleştirmeden önce hedefte değişiklik olduktan sonra geçmesi gereken süre miktarını belirtmek için Delay özelliğini kullanabilirsiniz. Örneğin, bir veri nesnesinin özelliğine iki şekilde bağlı özellik verilerine sahip bir sahip olduğunu ve SliderValue özelliğinin UpdateSourceTrigger olarak ayar olduğunu PropertyChanged varsayalım. Bu örnekte, kullanıcı tarafından taşınırken Slider kaynak, taşırken her piksel için Slider günceller. Kaynak nesne genellikle kaydırıcının değerine yalnızca kaydırıcının değişmesi durduğunda Value ihtiyaç gösterir. Kaynağın çok sık güncelleştirilemezseniz, parmak hareket edene kadar belirli bir süre geçene kadar kaynağın Delay güncelleştirilmez olması gerektiğini belirtmek için kullanın.

ICustomTypeProvider Uygulayan türlere bağlama

WPF, özel türler olarak da bilinen ICustomTypeProvider , uygulayan nesnelere veri bağlamayı destekler. Aşağıdaki durumlarda özel türleri kullanabilirsiniz.

  1. Veri PropertyPath bağlamada olduğu gibi. Örneğin, Path özelliğinin özel Binding bir türün özelliğine başvurabilirsiniz.

  2. özelliğinin değeri DataType olarak.

  3. bir içinde otomatik olarak oluşturulan sütunları belirleyen bir tür DataGrid olarak.

Bağlama ifadesinde veri bağlama bilgilerini alma

Bazı durumlarda, bağlamanın kaynağı ve hedef nesneleri hakkında bilgi almak için bir BindingExpressionBinding ve ihtiyacınız olabilir. Kaynak, hedef nesne veya ilişkili özelliği alasiniza yeni API'ler eklendi. bir kaynağınız BindingExpression olduğunda, hedef ve kaynak hakkında bilgi almak için aşağıdaki API'leri kullanın.

Bağlamanın bu değerini bulmak için Bu API'yi kullanın
Hedef nesne BindingExpressionBase.Target
Hedef özellik BindingExpressionBase.TargetProperty
Kaynak nesne BindingExpression.ResolvedSource
Kaynak özelliği BindingExpression.ResolvedSourcePropertyName
,'nin BindingExpression bir BindingGroup BindingExpressionBase.BindingGroup
Bir BindingGroup Owner

Geçerli bir DataContext nesnesini denetleme

bir öğe kapsayıcısı DataContext içinde bağlantısının kesildiğinde ItemsControl durumlar vardır. Öğe kapsayıcısı, içinde bir öğeyi görüntüleyen kullanıcı arabirimi ItemsControl öğesidir. bir ItemsControl koleksiyona bağlı veriler olduğunda, her öğe için bir öğe kapsayıcısı oluşturulur. Bazı durumlarda öğe kapsayıcıları görsel ağaçtan kaldırılır. Bir öğe kapsayıcısı kaldırılan iki tipik durum, temel alınan koleksiyondan bir öğenin kaldırılması ve üzerinde sanallaştırmanın ItemsControl etkinleştirilmesidir. Bu durumlarda, DataContext öğe kapsayıcısı özelliği statik özellik tarafından döndürülen sentinel nesnesine BindingOperations.DisconnectedSource ayarlanır. bir öğe kapsayıcısı DataContext erişmeden önce DisconnectedSource nesnesinin nesnesine eşit DataContext olup olmadığını denetlemelisiniz.

Verilerin değerleri değişti olarak verileri yeniden konumlandırma (Canlı şekillendirme)

Bir veri koleksiyonu gruplanmış, sıralanmış veya filtrelenmiş olabilir. WPF 4.5, veriler değiştirildiğinde verilerin yeniden düzenlense de yeniden düzenlenmiş olması için kullanılır. Örneğin, bir uygulamanın borsada stokları listelemektedir ve hisse senedi değerine göre DataGrid sıralanmış şekilde bir kullandığını varsayalım. Hisse senedinde canlı sıralama etkinleştirildiyse, hisse senedinin değeri başka bir hisse senedinin değerinden büyük veya daha küçük olduğunda hisse CollectionViewDataGrid senedinin konumundaki konumu hareket eder. Daha fazla bilgi için ICollectionViewLiveShaping bkz. arabirimi.

Bir Etkinliğe Zayıf Başvuru Kurmak için Geliştirilmiş Destek

Zayıf olay desenini uygulamak artık daha kolaydır çünkü olaylara aboneler ek arabirim uygulamadan buna katılabilir. Genel sınıf ayrıca belirli bir olay için ayrılmış bir olay WeakEventManager yoksa abonelerin zayıf olay WeakEventManager düzenine katılmalarını sağlar. Daha fazla bilgi için bkz. Zayıf Olay Desenleri.

Dispatcher sınıfı için yeni yöntemler

Dispatcher sınıfı, zaman uyumlu ve zaman uyumsuz işlemler için yeni yöntemler tanımlar. Zaman uyumlu yöntem, Invoke bir veya parametresi alan aşırı Action yüklemeleri Func<TResult> tanımlar. Yeni zaman uyumsuz yöntemi, ayrıca bir veya geri çağırma parametresi olarak InvokeAsync alır ve bir veya ActionFunc<TResult>DispatcherOperationDispatcherOperation<TResult> döndürür. ve DispatcherOperation sınıfları bir özelliği DispatcherOperation<TResult>Task tanımlar. InvokeAsyncçağrısında, veya ilişkili ile anahtar awaitDispatcherOperation sözcüğünü Task kullanabilirsiniz. veya tarafından döndürülen için zaman uyumlu Task olarak beklemeniz gerekirse DispatcherOperationDispatcherOperation<TResult> uzantı yöntemini DispatcherOperationWait çağırabilirsiniz. çağrısı, Task.Wait işlem bir çağrı iş parçacığında kuyruğa alındı ise kilitlenmeye neden olur. Zaman uyumsuz işlemler gerçekleştirmek için kullanma Task hakkında daha fazla bilgi için bkz. Görev Task.

Olaylar için İşaretleme Uzantıları

WPF 4.5, olaylar için işaretleme uzantılarını destekler. WPF, olaylar için kullanılacak bir işaretleme uzantısı tanımlamasa da, üçüncü taraflar olaylarla ilebilecek bir işaretleme uzantısı oluşturabilir.

Ayrıca bkz.