TOC

This article is currently in the process of being translated into Indonesian (~99% done).

Commands:

Introduction to WPF Commands

Pada bab sebelumnya dari tutorial ini, kita telah membicarakan mengenai bagaimana cara menangani event-event, contohnya saat user mengklik sebuah tombol atau item menu. Di dalam interface user modern, biasanya fungsi dapat dijangkau dari beberapa tempat, dipicu oleh user yang berbeda.

Contohnya, jika anda memiliki interface tipikal dengan menu utama dan sebuah set toolbars, sebuah aksi seperti New atau Open mungkin tersedia di dalam menu, pada toolbar, di konteks menu (contohnya pada saat mengklik kanan di daerah aplikasi utama) dan dari keyboard shortcut seperti Ctrl+N dan Ctrl+O.

Masing-masing aksi ini perlu melakukan halnya potongan kode-kode yang sama, jadi dalam sebuah aplikasi WinForm, anda harus dapat mendefinisikan event untuk setiap aksi setelah itu memanggil fungsi umum. Dengan contoh diatas, hal itu akan mengarah ke setidaknya tiga event dan beberapa kode untuk menangani shortcut dari keyboard. Bukan suatu situasi yang ideal.

Commands

Dengan menggunakan WPF, Microsoft sedang mencoba untuk memperbaikinya dengan sebuah konsep yang bernama commands. Hal itu memperbolehkan anda untuk mendefinisikan aksi di dalam suatu tempat lalu mereferensikan ke mereka dari semua user interface anda yang dikontrol seperti menu utama, tombol toolbar dan seterusnya. WPF juga akan menerima shortcut dari keyboard dan meneruskannya dengan command yang tepat, jika ada, membuat halnya cara ideal untuk menawarkan shortcut keyboard dalam sebuah aplikasi.

Commands juga dapat memecahkan masalah lain saat mengatasi beberapa jalan masuk ke fungsi yang sama. Dalam sebuah aplikasi WinForms, anda akan bertanggung jawab atas menulis kode yang dapat menonaktifkan elemen user interface saat aksi telah tidak tersedia. Contohnya, command seperti Cut, tetapi hanya saat teks yang dipilih, anda harus secara manual mengaktifkan dan menonaktifkan item menu utama, tombol toolbar dan konteks item menu setiap saat pilihan teks berganti.

Dengan command WPF, hal ini sentris. Dengan satu metode, anda bisa memutuskan apabila command yang telah diberikan bisa dieksekusi atau tidak, lalu WPF dapat mematikan dan menyalakan semua elemen interface. Hal ini membuat segalanya lebih mudah untuk membuat aplikasi yang responsif dan dinamis.

Command Bindings

Commands sebenarnya tidak dapat melakukan apa-apa dengan sendirinya. Pada akarnya, mereka terdiri dari ICommand interface darimana hanya mendefinisikan event dan dua metode: Execute() dan CanExecute(). Yang pertama adalah untuk melakukan aksi yang sebenarnya, sedangkan yang kedua adalah untuk mendeterminasikan apabila aksi sedang tersedia atau tidak. Untuk melakukan aksi command yang sebenarnya, anda membutuhkan penghubung antara command dan kode anda dan disinilah dimana CommandBinding dapat kita gunakan.

Sebuah CommandBinding biasanya didefinisikan dalam sebuah Window atau sebuah UserControl, dan memegang sebuah referensi ke Command yang ditanganinya, dan juga event handler sebenarnya untuk mengatasi Execute() dan CanExecute() events dari Command tersebut.

Pre-defined Commands

Tentunya anda bisa mengimplementasikan command anda sendiri, hal ini akan kita lihat dalam salah satu bab selanjutnya, tapi untuk memudahkan anda, tim WPF telah mendefinisikan lebih dari 100 comman umum yang dapat anda gunakan. Mereka telah membaginya menjadi 5 kategori, yaitu ApplicationCommands, NavigationCommands, MediaCommands, EditingCommands dan ComponentCommands. Terutama dalam ApplicationCommands terdapat aksi-aksi yang sering digunakan seperti New, Open, Save dan Cut, Copy dan Paste.

Rangkuman

Commands membantu anda untuk merespon aksi umum dari beberapa sumber yang berbeda, menggunakan single event handler. Itu juga memudahkan untuk mengaktifkan dan menonaktifkan elemen user interface berdasarkan dari ketersediaan dan keadaannya. Semua hal ini adalah teori, tetapi di bab selanjutnya kita akan membahas bagaimana commands digunakan dan bagaimana anda dapat mendefinisikan command anda sendiri.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!