Mengikat kontrol WPF ke layanan data WCF
Dalam panduan ini, Anda akan membuat aplikasi WPF yang berisi kontrol terikat data. Kontrol terikat ke catatan pelanggan yang dienkapsulasi dalam Layanan Data WCF. Anda juga akan menambahkan tombol yang dapat digunakan pelanggan untuk melihat dan memperbarui rekaman.
Panduan ini mengilustrasikan tugas-tugas berikut:
Membuat Model Data Entitas yang dihasilkan dari data dalam database sampel AdventureWorksLT.
Membuat Layanan Data WCF yang mengekspos data dalam Model Data Entitas ke aplikasi WPF.
Membuat sekumpulan kontrol terikat data dengan menyeret item dari jendela Sumber Data ke perancang WPF.
Membuat tombol yang menavigasi ke depan dan mundur melalui rekaman pelanggan.
Membuat tombol yang menyimpan perubahan pada data dalam kontrol ke Layanan Data WCF dan sumber data yang mendasar.
Catatan
Komputer Anda mungkin menampilkan nama atau lokasi yang berbeda untuk beberapa elemen antarmuka pengguna Visual Studio dalam artikel ini. Anda mungkin menggunakan edisi Visual Studio yang berbeda atau pengaturan lingkungan yang berbeda. Untuk informasi selengkapnya, lihat Mempersonalisasi IDE.
Prasyarat
Anda memerlukan komponen berikut untuk menyelesaikan panduan ini:
Visual Studio
Akses ke instans SQL Server atau SQL Server Express yang berjalan yang memiliki database sampel AdventureWorksLT yang melekat padanya. Untuk mengunduh database, lihat Database sampel AdventureWorks
Pemahaman sebelumnya tentang konsep berikut juga berguna, tetapi tidak diperlukan untuk menyelesaikan panduan:
Layanan Data WCF.
Model data di WCF Data Services.
Model Data Entitas dan Kerangka Kerja Entitas ADO.NET. Untuk informasi selengkapnya, lihat Gambaran umum Kerangka Kerja Entitas.
Pengikatan data WPF. Untuk informasi selengkapnya, lihat Gambaran umum Pengikatan Data.
Membuat proyek layanan
Mulai panduan ini dengan membuat proyek C# atau Visual Basic ASP.NET Web Application . Beri nama proyek AdventureWorksService.
Di Penjelajah Solusi, klik kanan Default.aspx dan pilih Hapus. File ini tidak diperlukan untuk panduan.
Membuat Model Data Entitas untuk layanan
Untuk mengekspos data ke aplikasi dengan menggunakan Layanan Data WCF, Anda harus menentukan model data untuk layanan tersebut. Layanan Data WCF mendukung dua jenis model data: Model Data Entitas, dan model data kustom yang ditentukan dengan menggunakan objek runtime bahasa umum (CLR) yang mengimplementasikan IQueryable<T> antarmuka. Dalam panduan ini, Anda membuat Model Data Entitas untuk model data.
Pada menu Proyek, klik Tambahkan Item Baru.
Di daftar Templat terinstal, klik Data, lalu pilih item proyek Model Data Entitas ADO.NET.
Ubah nama menjadi
AdventureWorksModel.edmx
, dan klik Tambahkan.Wizard Model Data Entitas terbuka.
Pada halaman Pilih Konten Model, klik Hasilkan dari database, dan klik Berikutnya.
Pada halaman Pilih Koneksi Data Anda, pilih salah satu opsi berikut ini:
Jika koneksi data ke database sampel AdventureWorksLT tersedia di daftar dropdown, pilihlah.
Klik Koneksi Baru, dan buat koneksi ke database AdventureWorksLT.
Pada halaman Pilih Koneksi Data Anda, pastikan bahwa opsi Simpan pengaturan koneksi entitas di App.Config sebagai dipilih, lalu pilih Berikutnya.
Pada halaman Pilih Objek Database Anda, perluas Tabel, lalu pilih tabel SalesOrderHeader .
Klik Selesai.
Buat Layanan
Buat Layanan Data WCF untuk mengekspos data dalam Model Data Entitas ke aplikasi WPF:
Pada menu Proyek, pilih Tambahkan Item Baru.
Di daftar Templat terinstal, klik Web, lalu pilih item proyek WCF Data Service.
Di kotak Nama , ketik
AdventureWorksService.svc
, dan klik Tambahkan .Visual Studio menambahkan ke
AdventureWorksService.svc
proyek.
Mengonfigurasi layanan
Anda harus mengonfigurasi layanan untuk beroperasi pada Model Data Entitas yang Anda buat:
AdventureWorks.svc
Dalam file kode, ganti deklarasi kelas AdventureWorksService dengan kode berikut.public class AdventureWorksService : DataService<AdventureWorksLTEntities> { // This method is called only once to initialize service-wide policies. public static void InitializeService(IDataServiceConfiguration config) { config.SetEntitySetAccessRule("SalesOrderHeaders", EntitySetRights.All); } }
Kode ini memperbarui kelas AdventureWorksService , sehingga berasal dari DataService<T> yang beroperasi pada
AdventureWorksLTEntities
kelas konteks objek di Model Data Entitas Anda. Ini juga memperbaruiInitializeService
metode untuk memungkinkan klien layanan akses baca/tulis penuh keSalesOrderHeader
entitas.Bangun proyek, dan verifikasi bahwa proyek dibangun tanpa kesalahan.
Membuat aplikasi klien WPF
Untuk menampilkan data dari Layanan Data WCF, buat aplikasi WPF baru dengan sumber data yang didasarkan pada layanan. Nantinya dalam panduan ini, Anda akan menambahkan kontrol terikat data ke aplikasi.
Di Penjelajah Solusi, klik kanan simpul solusi, klik Tambahkan, dan pilih Proyek Baru.
Dalam dialog Proyek Baru, perluas Visual C# atau Visual Basic, lalu pilih Windows.
Pilih templat proyek Aplikasi WPF.
Dalam kotak Nama , ketik
AdventureWorksSalesEditor
, dan klik OK.Visual Studio menambahkan
AdventureWorksSalesEditor
proyek ke solusi.Pada menu Data klik Perlihatkan Sumber Data.
Jendela Sumber Data terbuka.
Di jendela Sumber Data, klik Tambahkan Sumber Data Baru.
Wizard Konfigurasi Sumber Data terbuka.
Di halaman Pilih Tipe Sumber Data wizard, pilih Layanan, lalu pilih Berikutnya.
Dalam kotak dialog Tambahkan Referensi Layanan, klik Temukan.
Visual Studio mencari solusi saat ini untuk layanan yang tersedia, dan menambahkan
AdventureWorksService.svc
ke daftar layanan yang tersedia dalam kotak Layanan .Dalam kotak Namespace , ketik AdventureWorksService.
Dalam kotak Layanan , klik AdventureWorksService.svc, lalu pilih OK.
Visual Studio mengunduh informasi layanan lalu kembali ke wizard Konfigurasi Sumber Data.
Di halaman Tambahkan Referensi Layanan, klik Selesai.
Visual Studio menambahkan simpul yang mewakili data yang dikembalikan oleh layanan ke jendela Sumber Data.
Menentukan antarmuka pengguna
Tambahkan beberapa tombol ke jendela dengan memodifikasi XAML di perancang WPF. Nantinya dalam panduan ini, Anda akan menambahkan kode yang memungkinkan pengguna untuk melihat dan memperbarui rekaman penjualan dengan menggunakan tombol ini.
Di Penjelajah Solusi, klik dua kali MainWindow.xaml.
Jendela terbuka di perancang WPF.
Dalam tampilan XAML perancang, tambahkan kode berikut di antara tag
<Grid>
:<Grid.RowDefinitions> <RowDefinition Height="75" /> <RowDefinition Height="525" /> </Grid.RowDefinitions> <Button HorizontalAlignment="Left" Margin="22,20,0,24" Name="backButton" Width="75"><</Button> <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75">></Button> <Button HorizontalAlignment="Right" Margin="0,21,46,24" Name="saveButton" Width="110">Save changes</Button>
Bangun proyek.
Membuat kontrol terikat data
Buat kontrol yang menampilkan rekaman pelanggan dengan menyeret simpul SalesOrderHeaders
dari jendela Sumber Data ke perancang.
Di jendela Sumber Data, klik menu daftar dropdown untuk simpul SalesOrderHeaders , dan pilih Detail.
Perluas simpul SalesOrderHeaders .
Untuk contoh ini, beberapa bidang tidak akan ditampilkan, jadi klik menu daftar dropdown di samping simpul berikut dan pilih Tidak Ada:
CreditCardApprovalCode
ModifiedDate
OnlineOrderFlag
RevisiJumlah
rowguid
Tindakan ini mencegah Visual Studio membuat kontrol terikat data untuk simpul ini di langkah berikutnya. Untuk panduan ini, asumsikan bahwa pengguna akhir tidak perlu melihat data ini.
Dari jendela Sumber Data, seret simpul SalesOrderHeaders ke baris kisi di bawah baris yang berisi tombol.
Visual Studio menghasilkan XAML dan kode yang membuat sekumpulan kontrol yang terikat ke data dalam tabel Produk . Untuk informasi selengkapnya tentang XAML dan kode yang dihasilkan, lihat Mengikat kontrol WPF ke data dalam Visual Studio.
Di perancang, klik kotak teks di samping label ID Pelanggan.
Di jendela Properti , pilih kotak centang di samping properti IsReadOnly .
Atur properti IsReadOnly untuk setiap kotak teks berikut:
Nomor Pesanan Pembelian
ID Pesanan Penjualan
Nomor Pesanan Penjualan
Memuat data dari layanan
Gunakan objek proksi layanan untuk memuat data penjualan dari layanan. Kemudian tetapkan data yang dikembalikan ke sumber data untuk CollectionViewSource di jendela WPF.
Di perancang, untuk membuat
Window_Loaded
penanganan aktivitas, klik dua kali teks yang berbunyi: MainWindow.Ganti penanganan aktivitas dengan kode berikut. Pastikan Anda mengganti
localhost
alamat dalam kode ini dengan alamat host lokal di komputer pengembangan Anda.private AdventureWorksService.AdventureWorksLTEntities dataServiceClient; private System.Data.Services.Client.DataServiceQuery<AdventureWorksService.SalesOrderHeader> salesQuery; private CollectionViewSource ordersViewSource; private void Window_Loaded(object sender, RoutedEventArgs e) { // TODO: Modify the port number in the following URI as required. dataServiceClient = new AdventureWorksService.AdventureWorksLTEntities( new Uri("http://localhost:45899/AdventureWorksService.svc")); salesQuery = dataServiceClient.SalesOrderHeaders; ordersViewSource = ((CollectionViewSource)(this.FindResource("salesOrderHeadersViewSource"))); ordersViewSource.Source = salesQuery.Execute(); ordersViewSource.View.MoveCurrentToFirst(); }
Menavigasi rekaman penjualan
Tambahkan kode yang memungkinkan pengguna untuk menggulir rekaman penjualan dengan menggunakan tombol < dan > .
Di perancang, klik dua kali tombol < pada permukaan jendela.
Visual Studio membuka file code-behind, dan membuat penanganan aktivitas
backButton_Click
baru untuk peristiwa Click tersebut.Tambahkan kode berikut ke penanganan aktivitas yang dihasilkan
backButton_Click
:Kembali ke perancang, dan klik dua kali tombol > .
Visual Studio membuka file code-behind, dan membuat penanganan aktivitas
nextButton_Click
baru untuk peristiwa Click tersebut.Tambahkan kode berikut ke penanganan aktivitas yang dihasilkan
nextButton_Click
:
Menyimpan perubahan pada rekaman penjualan
Tambahkan kode yang memungkinkan pengguna untuk melihat dan menyimpan perubahan pada rekaman penjualan dengan menggunakan tombol Simpan perubahan :
Di perancang, klik dua kali tombol Simpan Perubahan .
Visual Studio membuka file code-behind, dan membuat penanganan aktivitas
saveButton_Click
baru untuk peristiwa Click tersebut.Tambahkan kode berikut ke penanganan aktivitas
saveButton_Click
.
Uji aplikasi
Buat dan jalankan aplikasi untuk memverifikasi bahwa Anda dapat melihat dan memperbarui catatan pelanggan:
Pada menu Build , klik Build Solution. Verifikasi bahwa solusi dibangun tanpa kesalahan.
Tekan Ctrl+F5.
Visual Studio memulai proyek AdventureWorksService , tanpa men-debugnya.
Di Penjelajah Solusi, klik kanan proyek AdventureWorksSalesEditor.
Pada menu klik kanan (menu konteks), di bawah Debug, klik Mulai instans baru.
Aplikasi berjalan. Verifikasi hal berikut:
Kotak teks menampilkan bidang data yang berbeda dari rekaman penjualan pertama, yang memiliki ID pesanan penjualan 71774.
Anda dapat mengklik tombol > atau < untuk menavigasi melalui rekaman penjualan lainnya.
Di salah satu rekaman penjualan, ketik beberapa teks di kotak Komentar , lalu pilih Simpan perubahan.
Tutup aplikasi, lalu mulai aplikasi lagi dari Visual Studio.
Navigasikan ke catatan penjualan yang Anda ubah, dan verifikasi bahwa perubahan tetap ada setelah Anda menutup dan membuka kembali aplikasi.
Tutup aplikasi.
Langkah berikutnya
Setelah menyelesaikan panduan ini, Anda dapat melakukan tugas terkait berikut:
Pelajari cara menggunakan jendela Sumber Data di Visual Studio untuk mengikat kontrol WPF ke jenis sumber data lainnya. Untuk informasi selengkapnya, lihat Mengikat kontrol WPF ke himpunan data.
Pelajari cara menggunakan jendela Sumber Data di Visual Studio untuk menampilkan data terkait (yaitu, data dalam hubungan induk-anak) dalam kontrol WPF. Untuk informasi selengkapnya, lihat Panduan: Menampilkan data terkait dalam aplikasi WPF.