Berikut adalah sejumlah besar fitur tersembunyi yang dibahas untuk berbagai bahasa. Sekarang saya penasaran dengan beberapa fitur tersembunyi dari XAML dan WPF?
Satu yang saya temukan adalah acara klik header dari ListView
<ListView x:Name='lv'
Height="150"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler">
Properti GridViewColumnHeader.Click tidak terdaftar.
Beberapa fitur yang relevan sejauh ini:
Lihat juga:
wpf
xaml
hidden-features
Sauron
sumber
sumber
Jawaban:
Multibinding (dikombinasikan dengan StringFormat):
sumber
Ada juga trik PresentationTraceSources.TraceLevel untuk men-debug apa yang terjadi dengan binding dalam skenario tertentu. Yang harus Anda lakukan adalah merujuk namespace System.Diagnostics di rakitan WindowsBase
lalu tambahkan yang berikut ke ekspresi binding:
Log akan seperti ini:
sumber
3.5sp1 memperkenalkan TargetNullValue ke binding. Ini akan menyetel properti terikat ke Null jika nilai dimasukkan dan jika properti Anda adalah Null itu akan menampilkan nilai ini.
sumber
3.5sp1 memperkenalkan StringFormat ke dalam ekspresi yang mengikat, misalnya
sumber
Text={Binding Date, StringFormat='{}{0:MM/dd/yyyy}'}"
Terkadang Anda mendapatkan string yang terlalu panjang untuk ditampilkan pada label. Dalam hal ini kita dapat menggunakan
TextTrimming
propertiTextBlock
untuk menunjukkan ElipsTautan MSDN
sumber
Menambahkan efek Aero ke Window
sumber
Generik di XAML dengan x: TypeArguments
Jika Anda ingin menggunakan ObservableCollection di XAML, Anda perlu membuat tipe yang berasal dari ObservableCollection karena Anda tidak bisa mendeklarasikannya di XAML. Dengan XAML 2009 Anda dapat menggunakan atribut x: TypeArguments untuk menentukan tipe tipe generik.
sumber
Tampilkan Keterangan Alat pada kontrol yang dinonaktifkan
Wpf memungkinkan untuk menampilkan tooltip pada kontrol, jika dalam keadaan nonaktif.
Sebagai contoh
sumber
Penggunaan Konstruktor Non-Default dengan x: Argumen
Dalam XAML 2006 objek harus memiliki konstruktor default publik untuk menggunakannya. Di XAML 2009 Anda dapat mengirimkan argumen konstruktor dengan menggunakan sintaks x: Arguments.
sumber
Bukan fitur tersembunyi tetapi dengan WPF / XAML Anda mendapatkan Bea Stollnitz dan Josh Smith . Pemrograman Ratu dan Raja WPF / XAML.
sumber
Ekstensi markup dan properti terlampir adalah fitur favorit saya, mereka memungkinkan Anda untuk memperluas "kosakata" XAML dengan cara yang sangat elegan.
Ekstensi markup
Properti terlampir
Sumber untuk GridViewSort (btw, ini menggunakan
GridViewColumnHeader.Click
acara yang disebutkan oleh Ortus)sumber
WinUtil.EnableAeroGlass
tersedia di suatu tempat?Anda bisa merujuk ke tipe bertingkat di XAML menggunakan tanda plus (
+
). Misalnya, jika kita memiliki kelas ini:Kita bisa merujuk ke
SomeValue
XAML menggunakan sintaks berikut:Sintaks ini tidak didokumentasikan di MSDN , dan tidak didukung secara resmi. Seseorang bertanya tentang hal itu di forum MSDN, dan tampaknya itu merusak Desainer WPF VS2010. Ini telah dilaporkan di Microsoft Connect.
sumber
Berbagi ukuran kisi ( inilah contoh yang bagus). Singkatnya, Anda dapat memiliki kolom kisi dan baris berbagi ukuran, bahkan di berbagai kisi. Ini akan sangat berharga bagi semua orang di luar sana yang menggunakan DataGrid tanpa perlu mengedit data di tempat.
sumber
Pengikatan Prioritas . Memungkinkan Anda menggunakan asyn binding dalam urutan "pertama datang pertama kali":
sumber
Penggunaan Metode Pabrik Statis dengan x: FactoryMethod
Ketika Anda memiliki tipe yang tidak memiliki konstruktor publik tetapi metode pabrik statis Anda harus membuat tipe tersebut dalam kode di XAML 2006. Dengan XAML 2009 Anda dapat menggunakan atribut x: FactoryMethodx: Arguments untuk meneruskan nilai argumen.
sumber
Properti "teks" lanjutan
Hal lain yang tidak terlalu jelas adalah isi dari beberapa properti yang biasa kita gunakan hanya berisi teks. Jika properti elemen GUI berjenis Objek, kemungkinan besar Anda dapat, alih-alih hanya menyetel teks, menambahkan panel kebutuhan Anda yang menyertakan serangkaian kontrol.
Contohnya adalah MenuItem, di mana
Header
properti (yang biasanya hanya berisi teks) dapat berisi sekumpulan elemen gui yang dibungkus dalam kontrol panel (atau hanya satu elemen gui jika Anda hanya membutuhkan satu).Perhatikan juga
Icon
properti pada MenuItem. Ini biasanya berisi elemen Gambar, tetapi ini juga dapat berisi apa saja!sumber
Pengonversi XAML
Daftar berikut menunjukkan konverter yang dikembangkan oleh komunitas WPF untuk mengonversi format yang berbeda ke XAML atau sebaliknya.
Plugin Ekspor Adobe Illustrator XAML
Konverter Adobe Photoshop ke XAML
Plugin Ekspor Blender XAML
Plugin Ekspor Lightwave XAML
Ekspor Visio XAML
Konverter 3D Studio Max ke XAML
Konverter Maya ke XAML
Flash ke XAML Converter
SVG ke XAML Converter
Konverter WMF / EMF ke XAML
sumber
Jenis Bawaan
Jika Anda ingin menambahkan objek berjenis sederhana seperti string atau double ke kamus sumber daya hari ini, Anda perlu memetakan ruang nama clr yang diperlukan ke ruang nama XML. Di XAML 2009 kami banyak tipe sederhana yang termasuk dalam bahasa XAML.
Jenis berikut ini termasuk ke dalam bahasa XAML:
sumber
Referensi Objek Mudah dengan {x: Referensi}
Jika Anda ingin membuat referensi objek hari ini, Anda perlu melakukan penyatuan data dan mendeklarasikan sumber dengan ElementName. Di XAML 2009 Anda dapat menggunakan ekstensi markup {x: Reference} yang baru
sumber
x:Reference
merupakan fitur bahasa XAML 2009, ada beberapa skenario di mana ia akan bekerja di XAML yang telah dikompilasi juga. Namun, ini tidak berfungsi di semua tempat, dan dapat merusak tampilan desainer XAML.Penggunaan Warna Sistem
sumber
Dukungan untuk Tombol Kamus Sewenang-wenang
Dalam XAML 2006 semua x eksplisit: Nilai kunci diperlakukan sebagai string. Di XAML 2009 Anda dapat menentukan semua jenis kunci yang Anda suka dengan menulis kunci di ElementSyntax.
sumber
Setel ValidationError menurut Kode
ValidatioRule dalam BindingExpression hanya terpicu, saat sisi target pengikatan berubah. Jika Anda ingin mengatur kesalahan validasi dengan kode Anda dapat menggunakan potongan berikut.
Atur kesalahan validasi
Hapus kesalahan validasi
sumber
Kemampuan untuk Menjejali Elemen UI ke dalam TextBlock
Saya tidak tahu seberapa berguna (meskipun memenuhi syarat sebagai tersembunyi) ini ... tetapi pasti membuat saya lengah ketika saya pertama kali bertemu dengannya :
Anda dapat berargumen bahwa xaml berikut dapat berguna (yaitu meletakkan grafik di akhir beberapa teks):
Xaml di atas menghasilkan seperti berikut:
sumber
Debugging Animasi
Kesalahan Umum
Jika Anda mendapatkan error berikut: Tidak dapat menganimasikan '(0). (1)' pada instance objek yang tidak dapat diubah. mungkin Anda mengalami salah satu batasan berikut:
sumber
Binding tanpa INotifyPropertyChanged atau DependencyProperties
Seperti yang dibahas di sini, Anda bisa mengikat properti objek CLR biasa tanpa INotifyPropertyChanged, dan itu hanya akan berfungsi .
Ini adalah Forumpost yang saya maksud.
Mengutip:
Berikut adalah artikel bagus dan terperinci lainnya tentang masalah ini.
sumber