WPF
- Acessando dados no SQL Server com Entity Framework - II
Na primeira parte deste artigo eu criei o projeto WPF , o banco de dados e as tabelas usadas em nossa aplicação no SQL Server. Criei também o mapeamento OR/M usando o Entity Framework e a camada de acesso a dados usando os recursos do contexto gerado pelo EF.
Vamos agora concluir definindo a interface com o usuário.
Criando o projeto WPF
Vamos abrir o arquivo MainWindow.xaml criado no projeto e incluir neste formulário os seguintes controles:
Nas figuras abaixo temos a exibição de cada uma das tabItens e os controles que elas utilizam:
![]() |
![]() |
|
![]() |
Definimos os tabItens:
onde cada tabItem contém os controles relacionados
com a tarefa |
O código XAML deste arquivo é o seguinte:
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Manutenção de Itens" Height="350" Width="525" Background="#ACF5E7A9">
<Grid>
<TabControl Height="311" HorizontalAlignment="Left" Name="tabControl1" VerticalAlignment="Top" Width="503">
<TabItem Header="Procurar" Name="tabItem1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="83*" />
<ColumnDefinition Width="42*" />
<ColumnDefinition Width="368*" />
</Grid.ColumnDefinitions>
<TextBlock Text="Procurar" Width="80" Margin="6,6,282,305" Grid.Column="2" />
<TextBlock Height="23" HorizontalAlignment="Left" Margin="26,77,0,0" Name="textBlock1" Text="Procurar :" VerticalAlignment="Top" ForceCursor="True" Width="55" />
<ListBox Height="130" HorizontalAlignment="Left" Margin="26,126,0,0" Name="listBox1" VerticalAlignment="Top" Width="442"
MouseDoubleClick="listBox1_MouseDoubleClick" Grid.ColumnSpan="3">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Tag="{Binding Path=link}" NavigateUri="{Binding Path=link}" RequestNavigate="Hyperlink_RequestNavigate">
<TextBlock Text="{Binding Path=link}"/>
</Hyperlink>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Content="Procurar" Height="23" HorizontalAlignment="Right" Margin="0,77,25,0" Name="btnProcurar" VerticalAlignment="Top" Width="64" Click="button1_Click" Grid.Column="2" />
<ComboBox Height="23" HorizontalAlignment="Left" Margin="4,77,0,0" Name="comboBox1" VerticalAlignment="Top" Width="311" Text="{Binding topico}" Grid.Column="1"
Grid.ColumnSpan="2" />
<ComboBox Height="23" HorizontalAlignment="Left" Margin="4,24,0,0" Name="comboBox3" VerticalAlignment="Top" Width="311" SelectionChanged="comboBox3_SelectionChanged"
Grid.Column="1" Grid.ColumnSpan="2" />
<TextBlock Height="23" HorizontalAlignment="Left" Margin="15,24,0,0" Name="textBlock5" Text="Categoria :" VerticalAlignment="Top" Width="66" />
</Grid>
</TabItem>
<TabItem Header="Item" Name="tabItem2">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="#FFFDEFD4">
<TextBlock Margin="50,15,330,243" Text="Novo Item" FontSize="14" FontWeight="SemiBold" Foreground="#FF1900E1" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="121,115,0,0" Name="textBox1" VerticalAlignment="Top" Width="328" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="121,155,0,0" Name="textBox2" VerticalAlignment="Top" Width="328" />
<Button Content="Incluir" Height="23" HorizontalAlignment="Left" Margin="121,204,0,0" Name="btnIncluirProduto" VerticalAlignment="Top" Width="111" />
<TextBlock Height="23" HorizontalAlignment="Left" Margin="50,118,0,0" Name="textBlock2" Text="Nome" VerticalAlignment="Top" Width="60" />
<TextBlock Height="23" HorizontalAlignment="Left" Margin="50,157,0,0" Name="textBlock3" Text="Link" VerticalAlignment="Top" Width="64" />
<TextBlock Height="23" HorizontalAlignment="Left" Margin="50,56,0,0" Name="textBlock4" Text="Categoria" VerticalAlignment="Top" />
<ComboBox Height="23" HorizontalAlignment="Left" Margin="121,56,0,0" Name="comboBox2" VerticalAlignment="Top" Width="328" />
</Grid>
</TabItem>
<TabItem Header="Categoria" Name="tabItem3" Background="#1900C7F1">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="#350000FF">
<TextBlock Height="23" HorizontalAlignment="Left" Margin="38,99,0,0" Name="textBlock6" Text="Informe o nome da Categoria" VerticalAlignment="Top" />
<TextBox Height="23" Name="textBox4" Width="322" Margin="38,128,133,128" />
<Button Content="Incluir" Height="23" HorizontalAlignment="Left" Margin="366,128,0,0" Name="btnIncluirCategoria" VerticalAlignment="Top" Width="75" Click="button2_Click" />
</Grid>
</TabItem>
</TabControl>
</Grid>
</Window>
|
Note que estamos criando alguns eventos dos controles onde teremos que definir o código pertinente no arquivo MainWindow.xaml.vb e que estamos usando Binding para os campos link e tópico no arquivo XAML.
Definindo o código dos eventos
Vamos abrir o arquivo MainWindow.xaml.vb e definir o código abaixo:
1- Código do construtor do formulário que preenche os combobox com os dados das categorias cadastradas:
Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
comboBox3.ItemsSource = DALHiperlink.getCategoria()
comboBox2.ItemsSource = DALHiperlink.getCategoria()
End Sub
|
3- Código do evento Click do botão Procurar do tabitem Procurar que localiza e exibe um item com base na categoria selecionada no combobox:
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
listBox1.ItemsSource = Nothing
listBox1.ItemsSource = DALHiperlink.getDados(comboBox1.Text)
End Sub
|
4- Código do evento MouseDoubleClick do controle ListBox do tabItem Procurar que seleciona um item e copia o link para o clipboard:
Private Sub listBox1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
Try
Dim selectedDictionaryitem = TryCast(listBox1.Items(listBox1.SelectedIndex), Item)
Clipboard.SetText(selectedDictionaryitem.link)
MessageBox.Show("O endereço da URL foi copiado")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
|
5- Código do evento Click do botão Incluir da tabItem Item que inclui um novo item na tabela Itens:
Private Sub btnIncluirItem_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnIncluirItem.Click
Try
DALHiperlink.incluirDados(textBox1.Text, textBox2.Text, DirectCast(comboBox2.SelectedItem, String))
MessageBox.Show("As entradas forma adicionadas no banco de dados")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
|
6- Código do evento SelectionChanged do controle ComboBox3 do controle tabItem Categoria que atribui a seleção desta combobox a combobox1 da mesma tabItem:
Private Sub comboBox3_SelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs)
comboBox1.ItemsSource = DALHiperlink.getTopicos(comboBox3.SelectedItem)
End Sub
|
7- Código do evento Click do controle Button2 da tabitem Categoria que inclui uma nova categoria:
Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
DALHiperlink.incluirCategoria(textBox4.Text)
comboBox3.ItemsSource = DALHiperlink.getCategoria
comboBox2.ItemsSource = DALHiperlink.getCategoria
MessageBox.Show("Categoria Adicionada")
End Sub
|
8 - Código do evento RequestNavigate do Hiperlink exibido no controle ListBox representando o item selecionado. O código irá abrir a página do link clicado:
Private Sub Hyperlink_RequestNavigate(ByVal sender As System.Object, ByVal e As System.Windows.Navigation.RequestNavigateEventArgs)
Process.Start(New ProcessStartInfo(e.Uri.AbsoluteUri))
e.Handled = True
End Sub
|
Executando o projeto e efetuando uma busca temos o seguinte resultado:
![]() |
Pegue o projeto completo
aqui:
Wpf_Links.zip
Heb 4:1
Portanto, tendo-nos sido deixada a promessa de entrarmos no seu descanso, temamos não haja algum de vós que pareça ter falhado.Heb 4:2
Porque também a nós foram pregadas as boas novas, assim como a eles; mas a palavra da pregação nada lhes aproveitou, porquanto não chegou a ser unida com a fé, naqueles que a ouviram.Referências: