Demonstra Passo a passo: Controles do Silverlight de vinculação a objetos
Esta explicação passo a passo, você criará um aplicativo do Silverlight que contém os controles ligados a dados. Os controles estão vinculados a objetos de 2 relacionadas aos negócios definidas pelo usuário.
Essa explicação passo a passo ilustra as seguintes tarefas:
Criando um aplicativo do Silverlight.
Criar 2 relacionadas a objetos personalizados para vincular a interface do usuário.
Executando o Data Source Configuration Wizard para se conectar a objeto personalizado que preenche a Fontes de dados janela.
A criação de um conjunto de controles ligados a dados, arrastando itens da Fontes de dados janela para o Silverlight Designer.
Observação Seu computador pode mostrar diferentes nomes ou localizações para alguns do Visual Studio elementos de interface do usuário as instruções a seguir. O Visual Studio edição que você tem e as configurações que você usar determinam esses elementos. Para obter mais informações, consulte Trabalhando com configurações.
Pré-requisitos
Para completar este passo a passo, são necessários os seguintes componentes:
- Visual Studio 2010.
Conhecimento prévio dos seguintes conceitos também é útil, mas não é necessária para concluir o passo a passo:
Trabalhando com o Silverlight Designer. Para obter mais informações, consulte Silverlight.
Vinculação de dados do Silverlight. Para obter mais informações, consulte A ligação de dados.
Trabalhando com o XAML. Para obter mais informações, consulte XAML.
Criando o aplicativo do Silverlight
Inicie esta explicação passo a passo, criando um aplicativo do Silverlight.
Para criar o projeto do Silverlight
No menu File, crie um novo projeto.
Sob o Visual C# ou o nó de Visual Basic, clique em Silverlight e, em seguida, clique em Aplicativo do Silverlight.
No nome , digite SilverlightObjectBinding e, em seguida, clique em OK.
Deixe as configurações padrão de Novo aplicativo do Silverlight caixa de diálogo e clique OK.
O aplicativo do Silverlight é criado como uma solução com 2 projetos: um projeto de SilverlightObjectBinding e um projeto de SilverlightObjectBinding.Web é usado para hospedar o projeto SilverlightObjectBinding.
Criando objetos personalizados para vincular a
Para expor os dados para um aplicativo, um modelo de dados deve ser definido. Esta explicação passo a passo, você pode criar objetos personalizados que representam clientes e pedidos para o modelo de dados.
Para criar objetos de clientes
Em Solution Explorer, com o botão direito SilverlightObjectBinding de projeto, aponte para Add e, em seguida, clique em Novo Item.
No Add New Item caixa de diálogo, clique no classe item.
Altere o nome para Customere em seguida, clique em Add.
Substitua o arquivo de código do cliente, o Customer a classe com o seguinte código:
''' <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> { }
Para criar os objetos Orders
Em Solution Explorer, com o botão direito SilverlightObjectBinding de projeto, aponte para Adde em seguida, clique em Novo Item.
No Add New Item caixa de diálogo, clique no classe item.
Altere o nome para ordeme em seguida, clique em Add.
No arquivo de código de pedido, substituir o Order a classe com o seguinte código:
''' <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> { }
Crie o projeto.
Criar o objeto de fonte de dados
Criar um objeto de fonte de dados e preencher o Fontes de dados janela executando o Data Source Configuration Wizard.
Para criar o objeto de fonte de dados
No menu Data, clique em Show Data Sources.
Na janela Data Sources, clique em Add New Data Source.
O Data Source Configuration Wizard aparece.
No Escolher um tipo de fonte de dados página, clique em objeto e, em seguida, clique em próximo.
No Selecione os objetos de dados de página, expanda a exibição de árvore duas vezes e, em seguida, marque a caixa de seleção ao lado os clientes.
Observação Certifique-se de selecionar os clientese não o singular Customer. Se os clientes não estiver disponível, sair do assistente e recrie a solução.
Clique em Finish.
O Fontes de dados janela é preenchida com o objeto de fonte de dados.
Criação de controles ligados a dados
Criar controles que exibem dados em objetos arrastando o clientes e pedidos nós a partir de Fontes de dados janela para o designer.
Para criar os controles ligados a dados
Abra o MainPage.xaml no modo de design.
Do Fontes de dados janela, arraste o os clientes o nó para o designer.
Do Fontes de dados janela, arraste o pedidos o nó para o designer abaixo da grade de clientes.
Preencher os objetos com dados e ligá-los a CollectionViewSource gerado
Como este passo a passo usa objetos personalizados como um modelo de dados, dados de exemplo são criados e carregados quando a página do Silverlight é aberta.
Após você arrastar um objeto de fonte de dados da Fontes de dados janela, um comentário do código é gerada para ajudar a configurar a fonte de dados para apontar para o seu objeto personalizado. Descomente o comentário do código gerado e defina [System.Windows.Data.CollectionViewSource.Source] (myCollectionViewSource) para apontar para a sua coleção de objetos de dados. O procedimento a seguir mostra como modificar o código gerado para acoplá-la aos controles gerados.
Sempre que você arrastar itens da Fontes de dados janela para o designer, um [System.Windows.Data.CollectionViewSource] é gerado na página Silverlight. Seu nome é baseado na fonte de dados que você está usando. Substitua o comentário que lê: 'Resource Key for CollectionViewSource' com CustomersViewSource ou customerViewSource, dependendo do idioma.
Para preencher os objetos com dados e vincular controles a objetos
Em Solution Explorer, expanda o MainPage.xaml nó e então clique duas vezes o MainPage.xaml o arquivo de código.
No arquivo de código (MainPage.xaml.vb ou MainPage.xaml.cs) adicione o seguinte método para o MainPage classe:
' 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; }
Substitua o código comentado dentro do UserControl_Loaded o manipulador de eventos com o seguinte:
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(); } }
Testando o aplicativo
Construir e executar o aplicativo para verificar o que você pode exibir registros de clientes.
Para testar o aplicativo
Em Build menu, clique em Build Solution. Verifique se que a solução foi compilado sem erros.
Execute o aplicativo.
Verifique se os 3 clientes aparecem no datagrid e pedidos do cliente selecionado são exibidos na grade de pedidos.
Selecione um cliente diferente e verifique se que as ordens são atualizadas para exibir somente os pedidos do cliente selecionado.
Feche o aplicativo.
Próximas etapas
Depois de concluir este passo a passo, você pode executar as seguintes tarefas:
- Aprenda a salvar as alterações de volta para seu armazenamento de dados. Para obter mais informações, consulte A ligação de dados.