Saya tahu bahwa saya bisa membuat setter yang memeriksa untuk melihat apakah suatu nilai NULL dan melakukan sesuatu. Contoh:
<TextBlock>
<TextBlock.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding SomeField}" Value="{x:Null}">
<Setter Property="TextBlock.Text" Value="It's NULL Baby!" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
Tetapi bagaimana saya bisa mengecek nilai "tidak" ... seperti "TIDAK NULL", atau "TIDAK = 3"? Apakah itu mungkin di XAML?
Hasil: Terima kasih atas jawaban Anda ... Saya tahu saya bisa melakukan konverter nilai (yang berarti saya harus memasukkan kode, dan itu tidak akan menjadi XAML murni seperti yang saya harapkan). Namun, itu menjawab pertanyaan yang secara efektif "tidak" Anda tidak dapat melakukannya dalam XAML murni. Namun, jawaban yang dipilih mungkin menunjukkan cara terbaik untuk membuat fungsionalitas semacam itu. Bagus temukan.
sumber
Anda dapat menggunakan IValueConverter untuk ini:
Di mana IsNullConverter didefinisikan di tempat lain (dan conv diatur ke referensi namespace-nya):
Solusi yang lebih umum adalah dengan mengimplementasikan IValueConverter yang memeriksa kesetaraan dengan ConverterParameter, sehingga Anda dapat memeriksa apa pun, dan bukan hanya nol.
sumber
Ini sedikit curang tapi saya hanya mengatur gaya default dan kemudian mengesampingkannya menggunakan DataTrigger jika nilainya nol ...
sumber
Bandingkan dengan null (Seperti yang dikatakan Michael Noonan):
Bandingkan dengan yang bukan nol (tanpa konverter):
sumber
Saya menggunakan ini untuk hanya mengaktifkan tombol jika item listview dipilih (yaitu bukan null):
sumber
Anda bisa menggunakan
DataTrigger
kelas di Microsoft.Expression.Interactions.dll yang datang dengan Expression Blend .Contoh kode:
Dengan menggunakan metode ini Anda dapat memicu
GreaterThan
danLessThan
juga. Untuk menggunakan kode ini, Anda harus mereferensikan dua dll:sumber
Saya hanya menggunakan logika invers di sini ... mengatur stackpanel saya menjadi tak terlihat ketika comboitem saya tidak terisi, ia bekerja dengan cukup baik!
sumber
Berhenti! Tidak ada konverter! Saya tidak ingin "menjual" perpustakaan orang ini, tetapi saya benci fakta melakukan konverter setiap kali saya ingin membandingkan barang di XAML.
Jadi dengan perpustakaan ini: https://github.com/Alex141/CalcBinding
Anda dapat melakukannya [dan banyak lagi]:
Pertama, Dalam deklarasi windows / userControl:
kemudian, di blok teks
Bagian ajaibnya adalah conv: Binding 'MYValue == null' . Bahkan, Anda dapat mengatur kondisi apa pun yang Anda inginkan [lihat dokumen].
perhatikan bahwa saya bukan penggemar pihak ketiga. tetapi pustaka ini gratis, dan sedikit dampak (tambahkan saja 2 .dll ke proyek).
sumber
Solusi saya adalah dalam contoh DataContext (atau ViewModel jika menggunakan MVVM). Saya menambahkan properti yang mengembalikan true jika kondisi Not Null yang saya inginkan terpenuhi.
dan ikat DataTrigger ke properti di atas. Catatan: Di VB.NET pastikan untuk menggunakan operator If dan NOT fungsi IIf, yang tidak berfungsi dengan objek Null. Maka XAML adalah:
sumber
Jika Anda mencari solusi yang tidak menggunakan IValueConverter, Anda selalu bisa menggunakan mekanisme di bawah ini
sumber
Konverter:
Mengikat:
sumber
Anda dapat menggunakan konverter atau membuat properti baru di ViewModel Anda seperti itu:
dan gunakan:
sumber