Bir WCF veri hizmetine WPF denetimleri bağlama
Bu kılavuzda, veriye bağlı denetimler içeren bir WPF uygulaması oluşturacaksınız. Denetimler, WCF Veri Hizmeti'nde kapsüllenmiş müşteri kayıtlarına bağlıdır. Ayrıca müşterilerin kayıtları görüntülemek ve güncelleştirmek için kullanabileceği düğmeler de ekleyebilirsiniz.
Bu izlenecek yol aşağıdaki görevleri gösterir:
AdventureWorksLT örnek veritabanındaki verilerden oluşturulan bir Varlık Veri Modeli oluşturma.
Varlık Veri Modeli'ndeki verileri wpf uygulamasına sunan bir WCF Veri Hizmeti oluşturma.
Veri Kaynakları penceresindeki öğeleri WPF tasarımcısına sürükleyerek veriye bağlı denetimler kümesi oluşturma.
Müşteri kayıtları arasında ileri ve geri gezinen düğmeler oluşturma.
WCF Veri Hizmeti ve temel alınan veri kaynağı denetimlerindeki verilerde yapılan değişiklikleri kaydeden bir düğme oluşturma.
Not
Bilgisayarınız bu makaledeki Bazı Visual Studio kullanıcı arabirimi öğeleri için farklı adlar veya konumlar gösterebilir. Visual Studio'nun farklı bir sürümünü veya farklı ortam ayarlarını kullanıyor olabilirsiniz. Daha fazla bilgi için bkz . IDE'yi kişiselleştirme.
Önkoşullar
Bu izlenecek yolu tamamlamak için aşağıdaki bileşenlere ihtiyacınız vardır:
Visual Studio
AdventureWorksLT örnek veritabanının bağlı olduğu çalışan bir SQL Server veya SQL Server Express örneğine erişim. Veritabanını indirmek için bkz. AdventureWorks örnek veritabanları
Aşağıdaki kavramlar hakkında önceden bilgi sahibi olmak da yararlıdır, ancak izlenecek yolu tamamlamak için gerekli değildir:
WCF Veri Hizmetleri veri modelleri.
Varlık Veri Modelleri ve ADO.NET Entity Framework. Daha fazla bilgi için bkz . Entity Framework'e genel bakış.
WPF veri bağlama. Daha fazla bilgi için bkz . Veri Bağlamaya genel bakış.
Hizmet projesini oluşturma
C# veya Visual Basic ASP.NET Web Uygulaması projesi oluşturarak bu kılavuzu başlatın. Projeye AdventureWorksService adını verin.
Çözüm Gezgini'da Default.aspx sağ tıklayın ve Sil'i seçin. Bu dosya, izlenecek yol için gerekli değildir.
Hizmet için Varlık Veri Modeli oluşturma
WCF Veri Hizmeti kullanarak bir uygulamaya veri göstermek için hizmet için bir veri modeli tanımlamanız gerekir. WCF Veri Hizmeti iki tür veri modelini destekler: Varlık Veri Modelleri ve arabirimi uygulayan IQueryable<T> ortak dil çalışma zamanı (CLR) nesneleri kullanılarak tanımlanan özel veri modelleri. Bu kılavuzda, veri modeli için bir Varlık Veri Modeli oluşturacaksınız.
Proje menüsünde Yeni Öğe Ekle'ye tıklayın.
Yüklü Şablonlar listesinde Veri'ye tıklayın ve ADO.NET Varlık Veri Modeli proje öğesini seçin.
Adı olarak
AdventureWorksModel.edmx
değiştirin ve Ekle'ye tıklayın.Varlık Veri Modeli sihirbazı açılır.
Model İçeriği Seç sayfasında Veritabanından oluştur'a ve ardından İleri'ye tıklayın.
Veri Bağlantınızı Seçin sayfasında aşağıdaki seçeneklerden birini belirleyin:
Açılır listede AdventureWorksLT örnek veritabanına bir veri bağlantısı varsa bunu seçin.
Yeni Bağlantı'ya tıklayın ve AdventureWorksLT veritabanına bir bağlantı oluşturun.
Veri Bağlantınızı Seçin sayfasında, App.Config'de varlık bağlantısı ayarlarını farklı kaydet seçeneğinin belirlendiğinden emin olun ve İleri'yi seçin.
Veritabanı Nesnelerinizi Seçin sayfasında Tablolar'ı genişletin ve salesOrderHeader tablosunu seçin.
Finish (Son) düğmesine tıklayın.
Hizmeti oluşturma
Varlık Veri Modeli'ndeki verileri wpf uygulamasında kullanıma açmak için bir WCF Veri Hizmeti oluşturun:
Proje menüsünde Yeni Öğe Ekle'yi seçin.
Yüklü Şablonlar listesinde Web'e tıklayın ve WCF Veri Hizmeti proje öğesini seçin.
Ad kutusuna yazın
AdventureWorksService.svc
ve Ekle'ye tıklayın.Visual Studio,
AdventureWorksService.svc
öğesini projeye ekler.
Hizmeti yapılandırma
Hizmeti, oluşturduğunuz Varlık Veri Modeli üzerinde çalışacak şekilde yapılandırmanız gerekir:
AdventureWorks.svc
Kod dosyasında AdventureWorksService sınıf bildirimini aşağıdaki kodla değiştirin.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); } }
Bu kod AdventureWorksService sınıfını güncelleştirir, böylece Varlık Veri Modelinizdeki nesne bağlam sınıfında çalışan
AdventureWorksLTEntities
bir DataService<T> öğesinden türetilir. Ayrıca, hizmet istemcilerinin varlığa tam okuma/yazma erişimine izin vermek içinSalesOrderHeader
yöntemini güncelleştirirInitializeService
.Projeyi derleyin ve hatasız bir şekilde derlendiğini doğrulayın.
WPF istemci uygulamasını oluşturma
WCF Veri Hizmeti'nden verileri görüntülemek için, hizmeti temel alan bir veri kaynağıyla yeni bir WPF uygulaması oluşturun. Bu kılavuzun ilerleyen bölümlerinde uygulamaya veriye bağlı denetimler ekleyeceksiniz.
Çözüm Gezgini çözüm düğümüne sağ tıklayın, Ekle'ye tıklayın ve Yeni Proje'yi seçin.
Yeni Proje iletişim kutusunda Visual C# veya Visual Basic'i genişletin ve Ardından Windows'ı seçin.
WPF Uygulaması proje şablonunu seçin.
Ad kutusuna yazın
AdventureWorksSalesEditor
ve Tamam'a tıklayın.Visual Studio projeyi çözüme ekler
AdventureWorksSalesEditor
.Veri menüsünde Veri Kaynaklarını Göster'e tıklayın.
Veri Kaynakları penceresi açılır.
Veri Kaynakları penceresinde Yeni Veri Kaynağı Ekle'ye tıklayın.
Veri Kaynağı Yapılandırma sihirbazı açılır.
Sihirbazın Veri Kaynağı Türü Seçin sayfasında Hizmet'i ve ardından İleri'yi seçin.
Hizmet Başvurusu Ekle iletişim kutusunda Bul'a tıklayın.
Visual Studio, kullanılabilir hizmetler için geçerli çözümü arar ve Hizmetler kutusunda kullanılabilir hizmetler listesine ekler
AdventureWorksService.svc
.Ad Alanı kutusuna AdventureWorksService yazın.
Hizmetler kutusunda AdventureWorksService.svc'ye tıklayın ve tamam'ı seçin.
Visual Studio hizmet bilgilerini indirir ve ardından Veri Kaynağı Yapılandırma sihirbazına döner.
Hizmet Başvurusu Ekle sayfasında Son'a tıklayın.
Visual Studio, hizmet tarafından döndürülen verileri temsil eden düğümleri Veri Kaynakları penceresine ekler.
Kullanıcı arabirimini tanımlama
WPF tasarımcısında XAML'yi değiştirerek pencereye birkaç düğme ekleyin. Bu kılavuzun ilerleyen bölümlerinde, kullanıcıların bu düğmeleri kullanarak satış kayıtlarını görüntülemesine ve güncelleştirmesine olanak tanıyan kod ekleyebilirsiniz.
Çözüm Gezgini mainwindow.xaml öğesine çift tıklayın.
Pencere WPF tasarımcısında açılır.
Tasarımcının XAML görünümünde etiketler arasına
<Grid>
aşağıdaki kodu ekleyin:<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>
Projeyi derleyin.
Veriye bağlı denetimleri oluşturma
Düğümü Veri Kaynakları penceresinden tasarımcıya SalesOrderHeaders
sürükleyerek müşteri kayıtlarını görüntüleyen denetimler oluşturun.
Veri Kaynakları penceresinde SalesOrderHeaders düğümünün açılan liste menüsüne tıklayın ve Ayrıntılar'ı seçin.
SalesOrderHeaders düğümünü genişletin.
Bu örnekte bazı alanlar görüntülenmez, bu nedenle aşağıdaki düğümlerin yanındaki açılan liste menüsüne tıklayın ve Hiçbiri'ni seçin:
CreditCardApprovalCode
ModifiedDate
OnlineOrderFlag
RevisionNumber
rowguid
Bu eylem, Sonraki adımda Visual Studio'un bu düğümler için veriye bağlı denetimler oluşturmasını engeller. Bu kılavuzda, son kullanıcının bu verileri görmesi gerekmediğini varsayalım.
Veri Kaynakları penceresinde SalesOrderHeaders düğümünü düğmeleri içeren satırın altındaki kılavuz satırına sürükleyin.
Visual Studio, Product tablosundaki verilere bağlı bir dizi denetim oluşturan XAML ve kod oluşturur. Oluşturulan XAML ve kod hakkında daha fazla bilgi için bkz . Visual Studio'daki verilere WPF denetimlerini bağlama.
Tasarımcıda, Müşteri Kimliği etiketinin yanındaki metin kutusuna tıklayın.
Özellikler penceresinde IsReadOnly özelliğinin yanındaki onay kutusunu seçin.
Aşağıdaki metin kutularının her biri için IsReadOnly özelliğini ayarlayın:
Satınalma Siparişi Numarası
Satış Siparişi Kimliği
Satış Siparişi Numarası
Hizmetten verileri yükleme
Hizmetten satış verilerini yüklemek için hizmet ara sunucusu nesnesini kullanın. Ardından döndürülen verileri WPF penceresinde için veri kaynağına CollectionViewSource atayın.
Tasarımcıda, olay işleyicisini
Window_Loaded
oluşturmak için şu metni çift tıklatın: MainWindow.Olay işleyicisini aşağıdaki kodla değiştirin. Bu koddaki
localhost
adresi geliştirme bilgisayarınızdaki yerel ana bilgisayar adresiyle değiştirdiğinizden emin olun.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(); }
Satış kayıtlarında gezinme
ve düğmelerini kullanarak kullanıcıların satış kayıtlarında gezinmesini < > sağlayan kod ekleyin.
Tasarımcıda, pencere yüzeyindeki < düğmeye çift tıklayın.
Visual Studio arka planda kod dosyasını açar ve olay için yeni
backButton_Click
bir olay işleyicisi Click oluşturur.Oluşturulan
backButton_Click
olay işleyicisine aşağıdaki kodu ekleyin:Tasarımcıya dönün ve düğmeye > çift tıklayın.
Visual Studio arka planda kod dosyasını açar ve olay için yeni
nextButton_Click
bir olay işleyicisi Click oluşturur.Oluşturulan
nextButton_Click
olay işleyicisine aşağıdaki kodu ekleyin:
Satış kayıtlarında yapılan değişiklikleri kaydetme
Değişiklikleri kaydet düğmesini kullanarak kullanıcıların satış kayıtlarını hem görüntülemesine hem de kaydetmesine olanak tanıyan kod ekleyin:
Tasarımcıda Değişiklikleri Kaydet düğmesine çift tıklayın.
Visual Studio arka planda kod dosyasını açar ve olay için yeni
saveButton_Click
bir olay işleyicisi Click oluşturur.Olay işleyicisine
saveButton_Click
aşağıdaki kodu ekleyin.
Uygulamayı test etme
Müşteri kayıtlarını görüntüleyip güncelleştirebildiğinizi doğrulamak için uygulamayı derleyin ve çalıştırın:
Oluştur menüsünde Çözüm Oluştur'a tıklayın. Çözümün hatasız derlendiğini doğrulayın.
Ctrl F5 tuşlarına+ basın.
Visual Studio, AdventureWorksService projesini hata ayıklamadan başlatır.
Çözüm Gezgini'de AdventureWorksSalesEditor projesine sağ tıklayın.
Sağ tıklama menüsünde (bağlam menüsü), Hata Ayıkla'nın altında Yeni örneği başlat'a tıklayın.
Uygulama çalışır. Aşağıdakileri doğrulayın:
Metin kutuları, satış siparişi kimliği 71774 olan ilk satış kaydındaki farklı veri alanlarını görüntüler.
Diğer satış kayıtlarında > gezinmek için veya < düğmelerine tıklayabilirsiniz.
Satış kayıtlarından birinde, Açıklama kutusuna bir metin yazın ve değişiklikleri kaydet'i seçin.
Uygulamayı kapatın ve Visual Studio'dan uygulamayı yeniden başlatın.
Değiştirdiğiniz satış kaydına gidin ve uygulamayı kapatıp yeniden açtığınızda değişikliğin devam ettiğini doğrulayın.
Uygulamayı kapatın.
Sonraki adımlar
Bu kılavuzu tamamladıktan sonra aşağıdaki ilgili görevleri gerçekleştirebilirsiniz:
Wpf denetimlerini diğer veri kaynağı türlerine bağlamak için Visual Studio'daki Veri Kaynakları penceresini kullanmayı öğrenin. Daha fazla bilgi için bkz . WPF denetimlerini bir veri kümesine bağlama.
WPF denetimlerinde ilgili verileri (yani bir üst-alt ilişkideki verileri) görüntülemek için Visual Studio'daki Veri Kaynakları penceresini kullanmayı öğrenin. Daha fazla bilgi için bkz . İzlenecek yol: WPF uygulamasında ilgili verileri görüntüleme.