Bagikan melalui


Yang Baru di WPF Versi 4.5

Topik ini berisi informasi tentang fitur baru dan yang ditingkatkan di Windows Presentation Foundation (WPF) versi 4.5.

Topik ini berisi bagian berikut:

Kontrol pita

WPF 4.5 dikirim dengan Ribbon kontrol yang menghosting Toolbar Akses Cepat, Menu Aplikasi, dan tab. Untuk informasi selengkapnya, lihat Gambaran Umum Pita.

Peningkatan performa saat menampilkan sekumpulan besar data yang dikelompokkan

Virtualisasi UI terjadi ketika subset elemen antarmuka pengguna (UI) dihasilkan dari sejumlah besar item data berdasarkan item mana yang terlihat di layar. VirtualizingPanel menentukan IsVirtualizingWhenGrouping properti terlampir yang memungkinkan Virtualisasi UI untuk data yang dikelompokkan. Untuk informasi selengkapnya tentang mengelompokkan data, lihat Cara: Mengurutkan dan Mengelompokkan Data Menggunakan Tampilan di XAML. Untuk informasi selengkapnya tentang memvirtualisasikan data yang dikelompokkan, lihat IsVirtualizingWhenGrouping properti terlampir.

Fitur baru untuk VirtualizingPanel

  1. Anda dapat menentukan apakah VirtualizingPanel, seperti VirtualizingStackPanel, menampilkan item parsial dengan menggunakan ScrollUnit properti terlampir. Jika ScrollUnit diatur ke Item, VirtualizingPanel hanya akan menampilkan item yang benar-benar terlihat. Jika ScrollUnit diatur ke Pixel, VirtualizingPanel dapat menampilkan item yang terlihat sebagian.

  2. Anda dapat menentukan ukuran cache sebelum dan sesudah viewport saat VirtualizingPanel virtualisasi dengan menggunakan CacheLength properti terlampir. Cache adalah jumlah ruang di atas atau di bawah viewport tempat item tidak divirtualisasi. Menggunakan cache untuk menghindari menghasilkan elemen UI saat digulir ke tampilan dapat meningkatkan performa. Cache diisi pada prioritas yang lebih rendah sehingga aplikasi tidak menjadi tidak responsif selama operasi. Properti VirtualizingPanel.CacheLengthUnit menentukan unit pengukuran yang digunakan oleh VirtualizingPanel.CacheLength.

Pengikatan ke properti statis

Anda dapat menggunakan properti statis sebagai sumber pengikatan data. Mesin pengikatan data mengenali kapan nilai properti berubah jika peristiwa statis dinaikkan. Misalnya, jika kelas SomeClass menentukan properti statis yang disebut MyProperty, SomeClass dapat menentukan peristiwa statis yang dinaikkan saat nilai MyProperty perubahan. Peristiwa statis dapat menggunakan salah satu tanda tangan berikut.

  • public static event EventHandler MyPropertyChanged;

  • public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;

Perhatikan bahwa dalam kasus pertama, kelas mengekspos peristiwa statis bernama PropertyNameChanged yang diteruskan EventArgs ke penanganan aktivitas. Dalam kasus kedua, kelas mengekspos peristiwa statis bernama StaticPropertyChanged yang diteruskan PropertyChangedEventArgs ke penanganan aktivitas. Kelas yang mengimplementasikan properti statis dapat memilih untuk menaikkan pemberitahuan perubahan properti menggunakan salah satu metode.

Mengakses koleksi pada Utas non-UI

WPF memungkinkan Anda mengakses dan memodifikasi pengumpulan data pada utas selain yang membuat koleksi. Ini memungkinkan Anda menggunakan utas latar belakang untuk menerima data dari sumber eksternal, seperti database, dan menampilkan data pada utas UI. Dengan menggunakan utas lain untuk memodifikasi koleksi, antarmuka pengguna Anda tetap responsif terhadap interaksi pengguna.

Memvalidasi data secara sinkron dan asinkron

Antarmuka INotifyDataErrorInfo memungkinkan kelas entitas data untuk menerapkan aturan validasi kustom dan mengekspos hasil validasi secara asinkron. Antarmuka ini juga mendukung objek kesalahan kustom, beberapa kesalahan per properti, kesalahan lintas properti, dan kesalahan tingkat entitas. Untuk informasi selengkapnya, lihat INotifyDataErrorInfo .

Memperbarui sumber pengikatan data secara otomatis

Jika Anda menggunakan pengikatan data untuk memperbarui sumber data, Anda dapat menggunakan Delay properti untuk menentukan jumlah waktu yang akan dilewati setelah properti berubah pada target sebelum sumber diperbarui. Misalnya, Anda memiliki yang memiliki Slider data properti dua Value arah yang terikat ke properti objek data dan UpdateSourceTrigger properti diatur ke PropertyChanged. Dalam contoh ini, saat pengguna memindahkan Slider, sumber diperbarui untuk setiap piksel yang Slider dipindahkan. Objek sumber biasanya membutuhkan nilai pengguncuran hanya ketika pengguncuran Value berhenti berubah. Untuk mencegah pembaruan sumber terlalu sering, gunakan Delay untuk menentukan bahwa sumber tidak boleh diperbarui sampai sejumlah waktu berlalu setelah ibu jari berhenti bergerak.

Pengikatan ke jenis yang Mengimplementasikan ICustomTypeProvider

WPF mendukung pengikatan data ke objek yang mengimplementasikan ICustomTypeProvider, juga dikenal sebagai jenis kustom. Anda dapat menggunakan jenis kustom dalam kasus berikut.

  1. PropertyPath Sebagai dalam pengikatan data. Misalnya, Path properti dari Binding dapat mereferensikan properti dari jenis kustom.

  2. Sebagai nilai DataType properti.

  3. Sebagai jenis yang menentukan kolom yang dihasilkan secara otomatis dalam DataGrid.

Mengambil informasi pengikatan data dari ekspresi pengikatan

Dalam kasus tertentu, Anda mungkin mendapatkan BindingExpression informasi dan Binding memerlukan informasi tentang objek sumber dan target pengikatan. API baru telah ditambahkan untuk memungkinkan Anda mendapatkan objek sumber atau target atau properti terkait. Ketika Anda memiliki BindingExpression, gunakan API berikut untuk mendapatkan informasi tentang target dan sumber.

Untuk menemukan nilai pengikatan ini Gunakan API ini
Objek target BindingExpressionBase.Target
Properti target BindingExpressionBase.TargetProperty
Objek sumber BindingExpression.ResolvedSource
Properti sumber BindingExpression.ResolvedSourcePropertyName
Apakah milik BindingExpressionBindingGroup BindingExpressionBase.BindingGroup
Pemilik BindingGroup Owner

Memeriksa objek DataContext yang valid

Ada kasus di DataContext mana kontainer item dalam ItemsControl menjadi terputus. Kontainer item adalah elemen UI yang menampilkan item dalam ItemsControl. ItemsControl Saat data terikat ke koleksi, kontainer item dihasilkan untuk setiap item. Dalam beberapa kasus, kontainer item dihapus dari pohon visual. Dua kasus umum di mana kontainer item dihapus adalah ketika item dihapus dari koleksi yang mendasar dan ketika virtualisasi diaktifkan pada ItemsControl. Dalam kasus ini, DataContext properti kontainer item akan diatur ke objek sentinel yang dikembalikan oleh BindingOperations.DisconnectedSource properti statis. Anda harus memeriksa apakah DataContext sama dengan DisconnectedSource objek sebelum mengakses DataContext kontainer item.

Memposisikan ulang data saat nilai data berubah (Pembentukan langsung)

Kumpulan data dapat dikelompokkan, diurutkan, atau difilter. WPF 4.5 memungkinkan data diatur ulang saat data dimodifikasi. Misalnya, aplikasi menggunakan untuk mencantumkan DataGrid saham di pasar saham dan saham diurutkan berdasarkan nilai saham. Jika penyortiran langsung diaktifkan pada saham, CollectionViewposisi saham dalam DataGrid pergerakan saat nilai saham menjadi lebih besar atau kurang dari nilai saham lain. Untuk informasi selengkapnya, lihat ICollectionViewLiveShaping antarmuka.

Dukungan yang Ditingkatkan untuk Menetapkan Referensi Lemah ke Suatu Peristiwa

Menerapkan pola peristiwa yang lemah sekarang lebih mudah karena pelanggan ke acara dapat berpartisipasi di dalamnya tanpa menerapkan antarmuka tambahan. Kelas generik WeakEventManager juga memungkinkan pelanggan untuk berpartisipasi dalam pola peristiwa yang lemah jika khusus WeakEventManager tidak ada untuk peristiwa tertentu. Untuk informasi selengkapnya, lihat Pola Peristiwa Lemah.

Metode baru untuk kelas Dispatcher

Kelas Dispatcher mendefinisikan metode baru untuk operasi sinkron dan asinkron. Metode sinkron Invoke menentukan kelebihan beban yang mengambil Action parameter atau Func<TResult> . Metode asinkron baru, InvokeAsync, juga mengambil Action atau Func<TResult> sebagai parameter panggilan balik dan mengembalikan DispatcherOperation atau DispatcherOperation<TResult>. Kelas DispatcherOperation dan DispatcherOperation<TResult> menentukan Task properti. Saat Anda memanggil InvokeAsync, Anda dapat menggunakan await kata kunci dengan DispatcherOperation atau yang terkait Task. Jika Anda perlu menunggu secara sinkron untuk Task yang dikembalikan oleh DispatcherOperation atau DispatcherOperation<TResult>, panggil DispatcherOperationWait metode ekstensi. Task.Wait Panggilan akan mengakibatkan kebuntuan jika operasi diantrekan pada utas panggilan. Untuk informasi selengkapnya tentang menggunakan Task untuk melakukan operasi asinkron, lihat Paralelisme Tugas (Pustaka Paralel Tugas).

Ekstensi Markup untuk Peristiwa

WPF 4.5 mendukung ekstensi markup untuk peristiwa. Meskipun WPF tidak menentukan ekstensi markup yang akan digunakan untuk peristiwa, pihak ketiga dapat membuat ekstensi markup yang dapat digunakan dengan peristiwa.

Baca juga