Aracılığıyla paylaş


İzlenecek yol: Nesnelere Silverlight Denetimleri Bağlama

Bu izlenecek yolda, veriye bağlı denetimler içeren bir Silverlight uygulaması yaratacaksınız.Denetimler için 2 ilişkili kullanıcı tanımlı iş nesneleri bağlıdır.

Bu örneklerde aşağıdaki görevler gösterilir:

  • Bir Silverlight uygulaması yaratmak.

  • İlişkili kullanıcı arabirimi bağlamak için özel nesnelerin 2 oluşturma.

  • Çalışan Data Source Configuration Wizard dolduran, özel nesneye bağlanmak için Veri kaynakları pencere.

  • Öğeleri sürükleyerek veriye bağlı denetimler kümesi oluşturma Veri kaynakları penceresine Silverlight Tasarımcısı.

    [!NOT]

    Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için, bkz. Visual Studio'da Geliştirme Ayarlarını özelleştirme.

Önkoşullar

Bu örneği tamamlamak için aşağıdaki bileşenler gerekmektedir:

  • Visual Studio

Aşağıdaki kavramlar, önceki bilgisi de yararlı, ancak bu izlenecek yolu tamamlamak için gerekli değildir:

  • Çalışma Silverlight Tasarımcısı.Daha fazla bilgi için bkz: Silverlight.

  • Silverlight veri bağlama.Daha fazla bilgi için bkz: Veri baðlama.

  • xaml ile çalışma.Daha fazla bilgi için bkz: xaml.

Silverlight uygulaması oluşturma

Bu izlenecek yolda, bir Silverlight uygulaması yaratarak başlayın.

Silverlight projesi oluşturmak için

  1. Üzerinde dosyasını menüsünde, yeni bir proje yaratın.

  2. Altında Visual C# veya Visual Basic düğümSilverlightSilverlight uygulaması.

  3. İçinde ad kutusuna yazın SilverlightObjectBinding 'ı Tamam.

  4. Varsayılan ayarlarında bırakın Yeni bir Silverlight uygulaması iletişim kutusunu tıklatın ve sonra Tamam.

    Silverlight uygulaması 2 projelerle çözümü olarak oluşturulur: SilverlightObjectBinding proje ve SilverlightObjectBinding.Web proje SilverlightObjectBinding proje barındırmak için kullanılır.

Nesneleri bağlamak için özel oluşturma

Uygulama verileri göstermek için bir veri modeli tanımlanmalıdır.Bu izlenecek yolda, müşteriler ve siparişler veri modeli temsil eden özel nesneler oluşturabilir.

Müşterilerin nesneleri oluşturmak için

  1. İçinde Solution Explorer, sağ SilverlightObjectBinding proje, Ekle'nın üzerine gelin ve sonra ' New Item.

  2. İçinde Add New Item iletişim kutusunu tıklatın sınıfı madde.

  3. Adını değiştirmek Müşterive i Ekle.

  4. Müşteri kodu dosyayı Customer yerine aşağıdaki kodu sınıfı:

    ''' <summary> 
    ''' A single customer 
    ''' </summary> 
    Public Class Customer
    
        Public Sub New()
        End Sub 
    
        ''' <summary> 
        ''' Creates a new customer 
        ''' </summary> 
        ''' <param name="customerId">The ID that uniquely identifies this customer</param> 
        ''' <param name="companyName">The name for this customer</param> 
        ''' <param name="city">The city for this customer</param> 
        Public Sub New(ByVal customerId As String,
                       ByVal companyName As String,
                       ByVal city As String)
            customerIDValue = customerId
            companyNameValue = companyName
            cityValue = city
        End Sub 
    
        Private customerIDValue As String 
        ''' <summary> 
        ''' The ID that uniquely identifies this customer 
        ''' </summary> 
        Public Property CustomerID() As String 
            Get 
                Return customerIDValue
            End Get 
            Set(ByVal value As String)
                customerIDValue = value
            End Set 
        End Property 
    
        Private companyNameValue As String 
        ''' <summary> 
        ''' The name for this customer 
        ''' </summary> 
        Public Property CompanyName() As String 
            Get 
                Return companyNameValue
            End Get 
            Set(ByVal Value As String)
                companyNameValue = Value
            End Set 
        End Property 
    
        Private cityValue As String 
        ''' <summary> 
        ''' The city for this customer 
        ''' </summary> 
        Public Property City() As String 
            Get 
                Return cityValue
            End Get 
            Set(ByVal Value As String)
                cityValue = Value
            End Set 
        End Property 
    
        Private ordersValue As Orders
        ''' <summary> 
        ''' The orders for this customer 
        ''' </summary> 
        Public Property Orders As Orders
            Get 
                Return ordersValue
            End Get 
            Set(ByVal value As Orders)
                ordersValue = value
            End Set 
        End Property 
    
    
        Public Overrides Function ToString() As String 
            Return Me.CompanyName & " (" & Me.CustomerID & ")" 
        End Function 
    End Class 
    
    
    ''' <summary> 
    ''' A collection of Customer objects. 
    ''' </summary> 
    ''' <remarks></remarks> 
    Public Class Customers
        Inherits System.Collections.Generic.List(Of Customer)
    
    End Class
    
    /// <summary> 
    /// A single customer 
    /// </summary> 
    public class Customer
    {
        /// <summary> 
        /// Creates a new customer 
        /// </summary> 
        public Customer()
        {
        }
    
        /// <summary> 
        /// Creates a new customer 
        /// </summary> 
        /// <param name="customerID"></param>
        /// <param name="companyName"></param>
        /// <param name="city"></param>
        public Customer(string customerID, string companyName,
           string city)
        {
            customerIDValue = customerID;
            companyNameValue = companyName;
            cityValue = city;
        }
    
        private string customerIDValue;
        /// <summary> 
        /// The ID that uniquely identifies this customer 
        /// </summary> 
        public string CustomerID
        {
            get { return customerIDValue; }
            set { customerIDValue = value; }
        }
    
        private string companyNameValue;
        /// <summary> 
        /// The name for this customer 
        /// </summary> 
        public string CompanyName
        {
            get { return companyNameValue; }
            set { companyNameValue = value; }
        }
    
        private string cityValue;
        /// <summary> 
        /// The city for this customer 
        /// </summary> 
        public string City
        {
            get { return cityValue; }
            set { cityValue = value; }
        }
    
        private Orders ordersValue;
        /// <summary> 
        /// The orders for this customer 
        /// </summary> 
        public Orders Orders
        {
            get { return ordersValue; }
            set { ordersValue = value; }
        }
    
        public override string ToString()
        {
            return this.CompanyName + " (" + this.CustomerID + ")";
        }
    }
    
    /// <summary> 
    /// A collection of Customer objects 
    /// </summary> 
    public class Customers : System.Collections.Generic.List<Customer>
    {
    
    }
    

Siparişleri nesneleri oluşturmak için

  1. İçinde Solution Explorer, sağ SilverlightObjectBinding proje, üzerine Ekle[NULL]'ı New Item.

  2. İçinde Add New Item iletişim kutusunu tıklatın sınıfı madde.

  3. Adını değiştirmek Siparişve i Ekle.

  4. Sipariş kodu dosyanın yerini Order yerine aşağıdaki kodu sınıfı:

    ''' <summary> 
    ''' A single order 
    ''' </summary> 
    Public Class Order
    
        Public Sub New()
        End Sub 
    
        ''' <summary> 
        ''' Creates a new order 
        ''' </summary> 
        ''' <param name="orderid">The identifier for this order</param> 
        ''' <param name="customerID">The customer who placed this order</param> 
        Public Sub New(ByVal orderid As Integer,
                       ByVal customerID As String)
            orderIDValue = orderid
            customerIDValue = customerID
        End Sub 
    
        Private orderIDValue As Integer 
        ''' <summary> 
        ''' Identifier for this order 
        ''' </summary> 
        Public Property OrderID() As Integer 
            Get 
                Return orderIDValue
            End Get 
            Set(ByVal value As Integer)
                orderIDValue = value
            End Set 
        End Property 
    
        Private customerIDValue As String 
        ''' <summary> 
        ''' The customer who placed this order 
        ''' </summary> 
        Public Property CustomerID() As String 
            Get 
                Return customerIDValue
            End Get 
            Set(ByVal Value As String)
                customerIDValue = Value
            End Set 
        End Property 
    End Class 
    
    ''' <summary> 
    ''' A collection of Orders 
    ''' </summary> 
    Public Class Orders
        Inherits System.Collections.Generic.List(Of Order)
    
    End Class
    
    /// <summary> 
    /// A single order 
    /// </summary> 
    public class Order
    {
        /// <summary> 
        /// Creates a new order 
        /// </summary> 
        /// <param name="orderid"></param>
        /// <param name="customerID"></param>
        public Order(int orderid, string customerID)
        {
            orderIDValue = orderid;
            customerIDValue = customerID;
        }
    
        private int orderIDValue;
        /// <summary> 
        /// The ID that uniquely identifies this order 
        /// </summary> 
        public int OrderID
        {
            get { return orderIDValue; }
            set { orderIDValue = value; }
        }
    
        private string customerIDValue;
        /// <summary> 
        /// The customer who placed this order 
        /// </summary> 
        public string CustomerID
        {
            get { return customerIDValue; }
            set { customerIDValue = value; }
        }
    }
    
    /// <summary> 
    /// A collection of Order objects 
    /// </summary> 
    public class Orders : System.Collections.Generic.List<Order>
    {
    
    }
    
  5. Projeyi yapılandırın.

Nesne veri kaynağı oluşturma

Nesne veri kaynağı oluşturma ve doldurma Veri kaynakları çalıştırarak pencere Data Source Configuration Wizard.

Nesne veri kaynağı oluşturmak için

  1. Üzerinde veri menüsünde,'ı Show Data Sources.

  2. İçinde Veri kaynakları penceresinde tıklatın Add New Data Source.

    Data Source Configuration Wizard görünür.

  3. İçinde veri kaynağı türü seçin sayfasında,'ı nesneİleri.

  4. İçinde Data Objects'i seçin sayfa, iki kez ağaç görünümü genişletin ve sonra yanındaki onay kutusunu seçin müşterilerin.

    [!NOT]

    Seçtiğinizden emin olun müşterilerinve tekil Müşteri.Müşterilerin yoksa sihirbazdan çıkmak ve çözümü yeniden oluþturun.

  5. Son düğmesini tıklatın.

    Veri kaynakları pencere nesnesi veri kaynağı ile doldurulur.

Veriye bağlı denetimler oluşturma

Sürükleyerek nesneleri veri görüntüleyen denetimler oluşturma Müşteriler ve siparişleri düğümlerden Veri kaynakları designer penceresi.

Veriye bağlı denetimler oluşturmak için

  1. MainPage.xaml Tasarım görünümünde açın.

  2. Dan Veri kaynakları penceresinde, Sürükle müşterilerin designer düğümünü.

  3. Dan Veri kaynakları penceresinde, Sürükle siparişleri müşterilerin ızgara altına designer düğümünü.

Veri nesnelerle doldurmak ve bunları bağlamak için oluşturulan CollectionViewSource

Bu izlenecek yolda, bir veri modeli özel nesneler kullandığından, Örnek veriler oluşturulur ve Silverlight sayfası açıldığında yüklenir.

Bir nesne veri kaynağından sürükledikten sonra Veri kaynakları penceresinde, kod yorumu özel nesneniz işaret edecek biçimde veri kaynağını yapılandırmak için oluşturulur.Üretilen kod yorum yorumsuz ve set System.Windows.Data.CollectionViewSource.Source (myCollectionViewSource), veri nesneleri koleksiyonu üstüne gelin.Aşağıdaki yordamda, oluşturulan denetimler baðlamak için oluşturulan kodu değiştirmek gösterilmiştir.

Öğeleri sürükleme her zaman Veri kaynakları designer penceresine bir System.Windows.Data.CollectionViewSource Silverlight sayfasında oluşturulur.Kullanmakta olduğunuz veri kaynağı adını temel alır.Okur açıklamayı değiştirin: 'Resource Key for CollectionViewSource' CustomersViewSource veya diline bağlı olarak customerViewSource.

Veri nesnelerle doldurmak ve nesnelere denetimler bağlamak için

  1. İçinde Solution Explorer'da, genişletme MainPage.xaml düğümünü ve ardından çift MainPage.xaml kod dosyası.

  2. Kod dosyasındaki (MainPage.xaml.vb veya MainPage.xaml.cs) aşağıdaki yönteme ekleyin MainPage sınıfı:

    ' Create sample data. 
    Private Function GetCustomers() As Customers
    
        Dim customers As New Customers
    
        ' Create 3 sample customers, 
        ' each with 3 sample orders. 
        Dim cust1 As New Customer("1", "A Bike Store", "Seattle")
        Dim cust1Orders As New Orders
        cust1Orders.Add(New Order(1, cust1.CustomerID))
        cust1Orders.Add(New Order(2, cust1.CustomerID))
        cust1Orders.Add(New Order(3, cust1.CustomerID))
        cust1.Orders = cust1Orders
    
        Dim cust2 As New Customer("2", "Progressive Sports", "Renton")
        Dim cust2Orders As New Orders
        cust2Orders.Add(New Order(4, cust2.CustomerID))
        cust2Orders.Add(New Order(5, cust2.CustomerID))
        cust2Orders.Add(New Order(6, cust2.CustomerID))
        cust2.Orders = cust2Orders
    
        Dim cust3 As New Customer("3", "Advanced Bike Components", "Irving")
        Dim cust3Orders As New Orders
        cust3Orders.Add(New Order(7, cust3.CustomerID))
        cust3Orders.Add(New Order(8, cust3.CustomerID))
        cust3Orders.Add(New Order(9, cust3.CustomerID))
        cust3.Orders = cust3Orders
    
        ' Add the sample customer objects to the  
        ' Customers collection.
        customers.Add(cust1)
        customers.Add(cust2)
        customers.Add(cust3)
    
        Return customers
    End Function
    
    // Create sample data. 
    private Customers GetCustomers()
    {
        Customers customers = new Customers();
    
        // Create 3 sample customers, 
        // each with 3 sample orders.
        Customer cust1 = new Customer("1", "A Bike Store", "Seattle");
        Orders cust1Orders = new Orders();
        cust1Orders.Add(new Order(1, cust1.CustomerID));
        cust1Orders.Add(new Order(2, cust1.CustomerID));
        cust1Orders.Add(new Order(3, cust1.CustomerID));
        cust1.Orders = cust1Orders;
    
        Customer cust2 = new Customer("2", "Progressive Sports", "Renton");
        Orders cust2Orders = new Orders();
        cust2Orders.Add(new Order(4, cust2.CustomerID));
        cust2Orders.Add(new Order(5, cust2.CustomerID));
        cust2Orders.Add(new Order(6, cust2.CustomerID));
        cust2.Orders = cust2Orders;
    
        Customer cust3 = new Customer("3", "Advanced Bike Components", "Irving");
        Orders cust3Orders = new Orders();
        cust3Orders.Add(new Order(7, cust3.CustomerID));
        cust3Orders.Add(new Order(8, cust3.CustomerID));
        cust3Orders.Add(new Order(9, cust3.CustomerID));
        cust3.Orders = cust3Orders;
    
        // Add the sample customer objects to the  
        // Customers collection.
        customers.Add(cust1);
        customers.Add(cust2);
        customers.Add(cust3);
    
        return customers;
    }
    
  3. Açıklamalı kod içinde yerine UserControl_Loaded aşağıdaki olay işleyicisi:

    Private Sub UserControl_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
    
        'Do not load your data at design time. 
        If Not (System.ComponentModel.DesignerProperties.GetIsInDesignMode(Me)) Then 
            'Load your data here and assign the result to the CollectionViewSource. 
            Dim myCollectionViewSource As System.Windows.Data.CollectionViewSource = CType(Me.Resources("CustomersViewSource"), System.Windows.Data.CollectionViewSource)
            myCollectionViewSource.Source = GetCustomers()
        End If 
    End Sub
    
    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
    
        // Do not load your data at design time. 
        if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
        {
            //Load your data here and assign the result to the CollectionViewSource.
            System.Windows.Data.CollectionViewSource myCollectionViewSource = (System.Windows.Data.CollectionViewSource)this.Resources["customersViewSource"];
            myCollectionViewSource.Source = GetCustomers();
        }
    }
    

Uygulamayı Test Etme

Yapı ve müşteri kayıtlarını görüntüleyebilirsiniz doğrulamak için uygulamayı çalıştırın.

Uygulamayı test etmek için

  1. Üzerinde Build menüsünde,'ı Build Solution.Çözümünüzün hatasız oluşturulduğunu doğrulayın.

  2. Uygulamayı çalıştırın.

  3. 3 Müşterileri datagrid denetiminde görünür ve seçilen müşterinin siparişlerinin siparişleri kılavuzda görüntülenir doğrulayın.

  4. Farklı bir müşteri seçin ve yalnızca seçili müşterinin siparişlerini görüntülemek için güncelleştirilen siparişler doğrulayın.

  5. Uygulamayý kapatýn.

Sonraki Adımlar

Bu izlenecek yolda tamamladıktan sonra aşağıdaki görevleri gerçekleştirebilirsiniz:

  • Veri deponuzda değişiklikleri kaydetmeyi öğrenin.Daha fazla bilgi için bkz: Veri baðlama.

Ayrıca bkz.

Diğer Kaynaklar

Visual Studio'da Veri Erişimi

Veri erişimi ve veri yapıları