Aracılığıyla paylaş


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:

Hizmet projesini oluşturma

  1. C# veya Visual Basic ASP.NET Web Uygulaması projesi oluşturarak bu kılavuzu başlatın. Projeye AdventureWorksService adını verin.

  2. Çö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.

  1. Proje menüsünde Yeni Öğe Ekle'ye tıklayın.

  2. Yüklü Şablonlar listesinde Veri'ye tıklayın ve ADO.NET Varlık Veri Modeli proje öğesini seçin.

  3. Adı olarak AdventureWorksModel.edmxdeğiştirin ve Ekle'ye tıklayın.

    Varlık Veri Modeli sihirbazı açılır.

  4. Model İçeriği Seç sayfasında Veritabanından oluştur'a ve ardından İleri'ye tıklayın.

  5. Verilerinizi seçin Bağlan 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ğlan ion'a tıklayın ve AdventureWorksLT veritabanına bir bağlantı oluşturun.

  6. Verilerinizi seçin Bağlan sayfasında, App.Config'de varlık bağlantısı ayarlarını farklı kaydet seçeneğinin belirlendiğinden emin olun ve İleri'ye tıklayın.

  7. Veritabanı Nesnelerinizi Seçin sayfasında Tablolar'ı genişletin ve salesOrderHeader tablosunu seçin.

  8. 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:

  1. Proje menüsünde Yeni Öğe Ekle'yi seçin.

  2. Yüklü Şablonlar listesinde Web'e tıklayın ve WCF Veri Hizmeti proje öğesini seçin.

  3. Ad kutusuna yazın AdventureWorksService.svcve 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:

  1. 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çin SalesOrderHeader yöntemini güncelleştirirInitializeService.

  2. 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.

  1. Çözüm Gezgini çözüm düğümüne sağ tıklayın, Ekle'ye tıklayın ve Yeni Proje'yi seçin.

  2. Yeni Proje iletişim kutusunda Visual C# veya Visual Basic'i genişletin ve Ardından Windows'ı seçin.

  3. WPF Uygulaması proje şablonunu seçin.

  4. Ad kutusuna yazın AdventureWorksSalesEditorve Tamam'a tıklayın.

    Visual Studio projeyi çözüme ekler AdventureWorksSalesEditor .

  5. Veri menüsünde Veri Kaynaklarını Göster'e tıklayın.

    Veri Kaynakları penceresi açılır.

  6. Veri Kaynakları penceresinde Yeni Veri Kaynağı Ekle'ye tıklayın.

    Veri Kaynağı Yapılandırma sihirbazı açılır.

  7. Sihirbazın Veri Kaynağı Türü Seçin sayfasında Hizmet'i seçin ve İleri'ye tıklayın.

  8. 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 eklerAdventureWorksService.svc.

  9. Ad Alanı kutusuna AdventureWorksService yazın.

  10. Hizmetler kutusunda AdventureWorksService.svc'ye ve ardından Tamam'a tıklayın.

    Visual Studio hizmet bilgilerini indirir ve ardından Veri Kaynağı Yapılandırma sihirbazına döner.

  11. 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.

  1. Çözüm Gezgini mainwindow.xaml öğesine çift tıklayın.

    Pencere WPF tasarımcısında açılır.

  2. 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>
    
  3. 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.

  1. Veri Kaynakları penceresinde SalesOrderHeaders düğümünün açılan liste menüsüne tıklayın ve Ayrıntılar'ı seçin.

  2. SalesOrderHeaders düğümünü genişletin.

  3. 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

    • Rowguıd

    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.

  4. 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.

  5. Tasarımcıda, Müşteri Kimliği etiketinin yanındaki metin kutusuna tıklayın.

  6. Özellikler penceresinde IsReadOnly özelliğinin yanındaki onay kutusunu seçin.

  7. 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.

  1. Tasarımcıda, olay işleyicisini Window_Loaded oluşturmak için şu metni çift tıklatın: MainWindow.

  2. 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();
    }
    

ve düğmelerini kullanarak kullanıcıların satış kayıtlarında gezinmesini <> sağlayan kod ekleyin.

  1. 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.

  2. Oluşturulan backButton_Click olay işleyicisine aşağıdaki kodu ekleyin:

    if (ordersViewSource.View.CurrentPosition > 0)
        ordersViewSource.View.MoveCurrentToPrevious();
    
  3. 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.

  4. Oluşturulan nextButton_Click olay işleyicisine aşağıdaki kodu ekleyin:

    if (ordersViewSource.View.CurrentPosition < ((CollectionView)ordersViewSource.View).Count - 1)
    {
        ordersViewSource.View.MoveCurrentToNext();
    }
    

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:

  1. 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.

  2. Olay işleyicisine saveButton_Click aşağıdaki kodu ekleyin.

    AdventureWorksService.SalesOrderHeader currentOrder = (AdventureWorksService.SalesOrderHeader)ordersViewSource.View.CurrentItem;
    dataServiceClient.UpdateObject(currentOrder);
    dataServiceClient.SaveChanges();
    

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:

  1. Oluştur menüsünde Çözüm Oluştur'a tıklayın. Çözümün hatasız derlendiğini doğrulayın.

  2. Ctrl F5 tuşlarına+ basın.

    Visual Studio, AdventureWorksService projesini hata ayıklamadan başlatır.

  3. Çözüm Gezgini'de AdventureWorksSalesEditor projesine sağ tıklayın.

  4. 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.

  5. Satış kayıtlarından birinde, Açıklama kutusuna bir metin yazın ve değişiklikleri kaydet'e tıklayın.

  6. Uygulamayı kapatın ve Visual Studio'dan uygulamayı yeniden başlatın.

  7. 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.

  8. 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.