Apakah mungkin untuk menetapkan kode di belakang kamus sumber daya di WPF. Misalnya dalam kontrol pengguna untuk tombol Anda mendeklarasikannya di XAML. Kode penanganan peristiwa untuk klik tombol dilakukan dalam file kode di belakang kontrol. Jika saya membuat templat data dengan tombol bagaimana saya bisa menulis kode pengendali event untuk itu klik tombol dalam kamus sumber daya.
147
Jawaban:
Saya pikir yang Anda tanyakan adalah Anda menginginkan file di belakang kode untuk ResourceDictionary. Anda benar-benar dapat melakukan ini! Bahkan, Anda melakukannya dengan cara yang sama seperti untuk Window:
Katakanlah Anda memiliki ResourceDictionary yang disebut MyResourceDictionary. Dalam file MyResourceDictionary.xaml Anda, letakkan atribut x: Class di elemen root, seperti:
Kemudian, buat kode di belakang file bernama MyResourceDictionary.xaml.cs dengan deklarasi berikut:
Dan kamu sudah selesai. Anda dapat meletakkan apa pun yang Anda inginkan dalam kode di belakang: metode, properti, dan penangan event.
== Pembaruan untuk aplikasi Windows 10 ==
Dan untuk berjaga-jaga jika Anda bermain dengan UWP ada satu hal lagi yang harus diperhatikan:
sumber
x:Class="MyCompany.MyProject.MySubFolder1.MyResourceDictionary"
Jika tidak, jika Anda hanya meletakkan x: Class = "MyResourceDictionary", parser xaml tidak akan menemukan kelas Anda.Saya tidak setuju dengan "ageektrapped" ... menggunakan metode kelas parsial bukan praktik yang baik. Apa tujuan memisahkan Kamus dari halaman itu?
Dari kode-belakang, Anda dapat mengakses kapak: Elemen nama dengan menggunakan:
Anda dapat melakukan ini dalam metode OnApplyTemplate jika Anda ingin terhubung ke kontrol ketika kontrol kustom Anda dimuat. OnApplyTemplate perlu diganti untuk melakukan ini. Ini adalah praktik umum dan memungkinkan gaya Anda tetap terputus dari kontrol. (Gaya tidak harus bergantung pada kontrol, tetapi kontrol harus bergantung pada memiliki gaya).
sumber
Gishu - sementara ini mungkin tampak sebagai "latihan yang umumnya tidak dianjurkan" Ini adalah salah satu alasan Anda mungkin ingin melakukannya:
Perilaku standar untuk kotak teks ketika mereka mendapatkan fokus adalah agar tanda sisipan ditempatkan pada posisi yang sama ketika kontrol kehilangan fokus. Jika Anda lebih suka di seluruh aplikasi Anda bahwa ketika pengguna tab ke kotak teks apa pun bahwa seluruh isi kotak teks itu disorot maka menambahkan penangan sederhana dalam kamus sumber daya akan melakukan trik.
Alasan lain di mana Anda ingin perilaku interaksi pengguna default berbeda dari perilaku out of the box sepertinya kandidat yang baik untuk kode di belakang dalam kamus sumber daya.
Sepenuhnya setuju bahwa apa pun yang merupakan fungsionalitas aplikasi spesifik tidak boleh ada dalam kode di belakang kamus sumber daya.
sumber
XAML adalah untuk membuat grafik objek yang tidak mengandung kode.
Templat Data digunakan untuk menunjukkan bagaimana objek pengguna kustom akan ditampilkan di layar ... (misalnya jika itu adalah item listbox) perilaku bukan bagian dari bidang keahlian templat data. Gambar ulang solusinya ...
sumber