Bagaimana saya bisa menyediakan beberapa kondisi untuk pemicu data di WPF?
wpf
datatrigger
Sumeru Suresh
sumber
sumber
@jasonk - jika Anda ingin memiliki "atau" maka abaikan semua kondisi sejak (A dan B) <=> ~ (~ A atau ~ B)
tetapi jika Anda memiliki nilai selain boolean coba gunakan jenis konverter:
Anda dapat menggunakan nilai-nilai dalam metode Konversi dengan cara apa pun yang Anda suka untuk menghasilkan kondisi yang cocok untuk Anda.
sumber
conditionConverter
dilakukan? Bagaimana kita menetapkan "Portland" dan "OR" sebagai duaor
opsi kita dalam contoh ini?Untuk menguraikan jawaban @ serine dan mengilustrasikan bekerja dengan kondisi multi-nilai non-sepele: Saya harus menunjukkan overlay "redup" pada item untuk kondisi boolean
NOT a AND (b OR NOT c)
.Untuk mengimplementasikan logika ini, saya membuat
IMultiValueConverter
nama generik (canggung) untuk mencocokkan logika sayaDi XAML saya menggunakan ini di
MultiDataTrigger
dalam<Style><Style.Triggers>
sumber dayaDan demi kelengkapan, konverter saya didefinisikan dalam a
ResourceDictionary
sumber
JAWABAN INI HANYA UNTUK ANIMASI
Jika Anda ingin menerapkan logika DAN, Anda harus menggunakan MultiTrigger, berikut ini sebuah contoh:
Misalkan kita ingin melakukan beberapa tindakan jika properti Text = "" (string kosong) DAN IsKeyboardFocused = "Salah", maka kode Anda akan terlihat seperti berikut:
Jika Anda ingin menerapkan logika ATAU, ada beberapa cara, dan itu tergantung pada apa yang Anda coba lakukan:
Opsi pertama adalah menggunakan beberapa Pemicu.
Jadi, misalkan Anda ingin melakukan sesuatu jika salah Text = "" ATAU IsKeyboardFocused = "False",
maka kode Anda akan terlihat seperti ini:
Tetapi masalah dalam hal ini adalah apa yang akan saya lakukan jika saya ingin melakukan sesuatu jika salah satu Teks TIDAK BAIK ATAU IsKeyboard = "Benar"? Ini dapat dicapai dengan pendekatan kedua:
Ingat aturan De Morgan, yang mengatakan! (! X &&! Y) = x || y.
Jadi kita akan menggunakannya untuk menyelesaikan masalah sebelumnya, dengan menulis multi pemicu yang dipicu ketika Text = "" dan IsKeyboard = "Benar", dan kami akan melakukan tindakan kami dalam TINDAKAN KELUAR , seperti ini:
sumber