Aracılığıyla paylaş


.NET Framework uygulamalarında WPF denetimlerini bir veri kümesine bağlama

Not

Veri kümeleri ve ilgili sınıflar, uygulamaların veritabanıyla bağlantısı kesilirken uygulamaların bellekteki verilerle çalışmasını sağlayan 2000'lerin başlarındaki eski .NET Framework teknolojileridir. Bunlar özellikle kullanıcıların verileri değiştirmesine ve değişiklikleri veritabanında kalıcı hale getirebilmesine olanak tanıyan uygulamalar için kullanışlıdır. Veri kümelerinin çok başarılı bir teknoloji olduğu kanıtlanmış olsa da, yeni .NET uygulamalarının Entity Framework Core kullanmasını öneririz. Entity Framework, tablosal verilerle nesne modelleri olarak çalışmak için daha doğal bir yol sağlar ve daha basit bir programlama arabirimine sahiptir.

Bu kılavuzda, veriye bağlı denetimler içeren bir WPF uygulaması oluşturursunuz. Denetimler, bir veri kümesinde kapsüllenmiş olan ürün kayıtlarına bağlıdır. Ayrıca, ürünlere göz atmak ve değişiklikleri ürün kayıtlarında kaydetmek için düğmeler eklersiniz.

Bu izlenecek yol aşağıdaki görevleri gösterir:

  • AdventureWorksLT örnek veritabanındaki verilerden oluşturulan bir WPF uygulaması ve veri kümesi oluşturma.

  • Bir veri tablosunu Veri Kaynakları penceresinden WPF Tasarım Aracı bir pencereye sürükleyerek veriye bağlı denetimler kümesi oluşturma.

  • Ürün kayıtları arasında ileri ve geri gezinen düğmeler oluşturma.

  • Kullanıcıların ürün kayıtlarında yaptığı değişiklikleri veri tablosuna ve temel alınan veri kaynağına 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:

  • Bu öğreticiyi tamamlamak için Visual Studio'da yüklü .NET masaüstü geliştirme ve Veri depolama ve işleme iş yüklerine ihtiyacınız vardır. Bunları yüklemek için Visual Studio Yükleyicisi açın ve değiştirmek istediğiniz Visual Studio sürümünün yanındaki Değiştir (veya Daha Fazla>Değiştir) öğesini seçin. Bkz. Visual Studio'yu değiştirme.

  • AdventureWorks Light (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:

Proje oluşturma

Ürün kayıtlarını görüntülemek için yeni bir WPF projesi oluşturun.

  1. Visual Studio'yu açın.

  2. Başlangıç penceresinde Yeni proje oluştur'u seçin.

  3. C# WPF Uygulaması proje şablonunu arayın ve projeyi oluşturmak için adımları izleyin ve projeyi AdventureWorksProductsEditor olarak adlandırın.

    Visual Studio, AdventureWorksProductsEditor projesini oluşturur.

Uygulama için veri kümesi oluşturma

Veriye bağlı denetimler oluşturabilmeniz için önce uygulamanız için bir veri modeli tanımlamanız ve bunu Veri Kaynakları penceresine eklemeniz gerekir. Bu kılavuzda, veri modeli olarak kullanılacak bir veri kümesi oluşturacaksınız.

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

    Veri Kaynakları penceresi açılır.

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

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

  3. Veri Kaynağı Türü Seçin sayfasında Veritabanı'nı seçin ve İleri'ye tıklayın.

  4. Veritabanı Modeli Seçin sayfasında Veri Kümesi'ni seçin ve ardından İleri'ye tıklayın.

  5. Verilerinizi seçin Bağlan sayfasında aşağıdaki seçeneklerden birini belirleyin:

    • Açılan listede AdventureWorksLT örnek veritabanına bir veri bağlantısı varsa, bunu seçin ve İleri'ye tıklayın.

    • Yeni Bağlan ion'a tıklayın ve AdventureWorksLT veritabanına bir bağlantı oluşturun.

  6. Bağlan Dizesini Uygulama Yapılandırma Dosyası'na Kaydet sayfasında Evet, bağlantıyı farklı kaydet onay kutusunu seçin ve İleri'ye tıklayın.

  7. Veritabanı Nesnelerinizi Seçin sayfasında Tablolar'ı genişletin ve ardından Ürün (SalesLT) tablosunu seçin.

  8. Finish (Son) düğmesine tıklayın.

    Visual Studio projeye yeni AdventureWorksLTDataSet.xsd bir dosya ekler ve Veri Kaynakları penceresine ilgili AdventureWorksLTDataSet öğesini ekler. Dosya, AdventureWorksLTDataSet.xsd adlı bir türlenmiş veri kümesini ve adlı AdventureWorksLTDataSetProductTableAdapterbir TableAdapter'ı tanımlar. Bu kılavuzun ilerleyen bölümlerinde veri kümesini verilerle doldurmak ve değişiklikleri veritabanına geri kaydetmek için kullanacaksınız ProductTableAdapter .

  9. Projeyi derleyin.

TableAdapter'ın varsayılan doldurma yöntemini düzenleme

Veri kümesini verilerle doldurmak için yöntemini ProductTableAdapterkullanınFill. Varsayılan olarak, Fill yöntemi içindekini ProductDataTableAdventureWorksLTDataSet Product tablosundaki tüm veri satırlarıyla doldurur. Bu yöntemi satırların yalnızca bir alt kümesini döndürecek şekilde değiştirebilirsiniz. Bu izlenecek yol için yöntemini değiştirerek yalnızca fotoğraf içeren ürünlerin satırlarını döndürün Fill .

  1. Çözüm Gezgini'da AdventureWorksLTDataSet.xsd dosyasına çift tıklayın.

    Veri kümesi tasarımcısı açılır.

  2. Tasarımcıda Fill, GetData() sorgusuna sağ tıklayın ve Yapılandır'ı seçin.

    TableAdapter Yapılandırma sihirbazı açılır.

  3. SQL Deyimi Girin sayfasında, metin kutusuna deyiminden SELECT sonra aşağıdaki WHERE yan tümceyi ekleyin.

    WHERE ThumbnailPhotoFileName <> 'no_image_available_small.gif'
    
  4. Finish (Son) düğmesine tıklayın.

Kullanıcı arabirimini tanımlama

WPF Tasarım Aracı 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 ürün kayıtlarında gezinmesini ve değişiklikleri kaydetmesini sağlayan kod ekleyebilirsiniz.

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

    Pencere WPF Tasarım Aracı 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="625" />
    </Grid.RowDefinitions>
    <Button HorizontalAlignment="Left" Margin="22,20,0,24" Name="backButton" Width="75">&lt;</Button>
    <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75">&gt;</Button>
    <Button HorizontalAlignment="Right" Margin="0,21,46,24" Name="saveButton" Width="110">Save changes</Button>
    
  3. Projeyi derleyin.

Veriye bağlı denetimler oluşturma

Tabloyu Veri Kaynakları penceresinden WPF Tasarım Aracı sürükleyerek Product müşteri kayıtlarını görüntüleyen denetimler oluşturun.

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

  2. Ürün 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:

    • ProductCategoryID

    • Productmodelıd

    • ThumbnailPhotoFileName

    • Rowguıd

    • Modifieddate

  4. ThumbNailPhoto düğümünün yanındaki açılan liste menüsüne tıklayın ve Görüntü'yü seçin.

    Not

    Varsayılan olarak, Veri Kaynakları penceresinde resimleri temsil eden öğelerin varsayılan denetimi Yok olarak ayarlanır. Bunun nedeni, resimlerin veritabanlarında bayt dizileri olarak depolanması ve bayt dizilerinin basit bir bayt dizisinden büyük bir uygulamanın yürütülebilir dosyasına kadar her şeyi içermesidir.

  5. Veri Kaynakları penceresinden Ürün düğümünü düğmeleri içeren satırın altındaki kılavuz satırına sürükleyin.

    Visual Studio, Products tablosundaki verilere bağlı bir denetim kümesini tanımlayan XAML oluşturur. Ayrıca verileri yükleyen kod da oluşturur. Oluşturulan XAML ve kod hakkında daha fazla bilgi için bkz . Visual Studio'daki verilere WPF denetimlerini bağlama.

  6. Tasarımcıda, Ürün Kimliği etiketinin yanındaki metin kutusuna tıklayın.

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

ve düğmelerini kullanarak kullanıcıların ürün 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. , ve yönteminin Window_Loaded dışında olacak ve AdventureWorksLTDataSetProductTableAdapter formun ProductViewSourceAdventureWorksLTDataSettamamına erişilebilecek şekilde olay işleyicisini değiştirin. Yalnızca bunları forma genel olarak bildirin ve aşağıdakine benzer şekilde olay işleyicisi içinde Window_Loaded atayın:

    private AdventureWorksProductsEditor.AdventureWorksLTDataSet AdventureWorksLTDataSet;
    private AdventureWorksProductsEditor.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter adventureWorksLTDataSetProductTableAdapter;
    private System.Windows.Data.CollectionViewSource productViewSource;
    
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        AdventureWorksLTDataSet = ((AdventureWorksProductsEditor.AdventureWorksLTDataSet)(this.FindResource("adventureWorksLTDataSet")));
        // Load data into the table Product. You can modify this code as needed.
        adventureWorksLTDataSetProductTableAdapter = new AdventureWorksProductsEditor.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter();
        adventureWorksLTDataSetProductTableAdapter.Fill(AdventureWorksLTDataSet.Product);
        productViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("productViewSource")));
        productViewSource.View.MoveCurrentToFirst();
    }
    
  3. Olay işleyicisine backButton_Click aşağıdaki kodu ekleyin:

    if (productViewSource.View.CurrentPosition > 0)
    {
        productViewSource.View.MoveCurrentToPrevious();
    }
    
  4. Tasarımcıya dönün ve düğmeye > çift tıklayın.

  5. Olay işleyicisine nextButton_Click aşağıdaki kodu ekleyin:

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

Ürün kayıtlarında yapılan değişiklikleri kaydetme

Kullanıcıların Değişiklikleri kaydet düğmesini kullanarak ürün kayıtlarında değişiklikleri kaydetmesini sağlayan 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:

    adventureWorksLTDataSetProductTableAdapter.Update(AdventureWorksLTDataSet.Product);
    

    Not

    Bu örnek, değişiklikleri kaydetmek için yöntemini TableAdapter kullanırSave. Yalnızca bir veri tablosu değiştirildiğinden, bu kılavuzda bu uygundur. Değişiklikleri birden çok veri tablosuna kaydetmeniz gerekiyorsa alternatif olarak, Visual Studio'nun TableAdapterManager veri kümenizle oluşturduğu yöntemini kullanabilirsinizUpdateAll. Daha fazla bilgi için bkz . TableAdapters.

Uygulamayı test etme

Uygulamayı derleyin ve çalıştırın. Ürün kayıtlarını görüntüleyebildiğinizi ve güncelleştirebildiğinizi doğrulayın.

  1. F5 tuşuna basın.

    Uygulama derlenip çalışır. Aşağıdakileri doğrulayın:

    • Metin kutuları, fotoğrafı olan ilk ürün kaydındaki verileri görüntüler. Bu ürün 713 ürün kimliğine ve Long-Sleeve Logo Jersey, S adına sahiptir.

    • Diğer ürün kayıtlarında > gezinmek için veya < düğmelerine tıklayabilirsiniz.

  2. Ürün kayıtlarından birinde Boyut değerini değiştirin ve ardından Değişiklikleri kaydet'e tıklayın.

  3. Uygulamayı kapatın ve ardından Visual Studio'da F5 tuşuna basarak uygulamayı yeniden başlatın.

  4. Değiştirdiğiniz ürün kaydına gidin ve değişikliğin kalıcı olduğunu doğrulayın.

  5. Uygulamayı kapatın.

Sonraki adımlar

Bu kılavuzu tamamladıktan sonra aşağıdaki ilgili görevleri deneyebilirsiniz:

  • 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 WCF veri hizmetine 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.