WPF. ALGUÉM J? SE AVENTUROU ?

F001E 25/11/2015 13:59:10
#454388
Boa tarde a todos.

Alguém desenvolve ou já desenvolveu em WPF(Windows Presentation Foundation).
Se sim, teriam um exemplo de conexão com banco de dados SQL Server.
No google não achei muito material relacionado a isso.
GUIMORAES 25/11/2015 14:13:06
#454389
F001E,

Atualmente só trabalho com WPF, em conjunto com o Firebird.
A conexão com o banco de dados deverá ser a mesma utilizada em Windows Forms, pois não há diferença, a única recomendação que te dou é utilizar a fundo orientação a objetos, pois os controles do WPF podem ser muito dinâmicos quando se utilizado POO, dando uma liberdade e ganho de recursos se comparado ao Windows Forms.

KERPLUNK 25/11/2015 14:31:08
#454391
Pessoalmente, nunca fiz nada profissionalmente com WPF, mas acho a idéia interessante. O modelo que uso atualmente(baseado em WebAPI), me atende perfeitamente tanto para aplicações Desktop, quando aplicações Web e mobile.
GUIMORAES 25/11/2015 15:23:43
#454393
Citação:

:
Pessoalmente, nunca fiz nada profissionalmente com WPF, mas acho a idéia interessante. O modelo que uso atualmente(baseado em WebAPI), me atende perfeitamente tanto para aplicações Desktop, quando aplicações Web e mobile.



Com base no que o Kerplunk disse, vale mais a pena desenvolver um aplicativo para WEB do que em WPF, visto que a mobilidade é muito maior em web do que em wpf. Mais é claro, isto vai depender da sua aplicação e como ela trabalha, você deve decidir se vale a pena.

Tenho várias aplicações em WPF, mais a principal é um Frente de Caixa que trabalha com o S@T e NFCe (um projeto grande).
KERPLUNK 25/11/2015 16:03:53
#454395
WebAPI pode ser consumida inclusive por aplicações WPF. Com HttpClient que é uma classe disponível em praticamente qualquer versão do Framework, você pode consumir qualquer método de qualquer verbo disponível na WebAPI. Faça um teste, crie uma WebAPI simples e verá o quão dinâmica ela é.

Tenho quase certeza que já expliquei aqui como funciona, mas vamos lá, explicando como funciona uma WebAPI:
Um exemplo bem simples de consumo de dados é o próprio browser(navegador), essa aplicação que você está usando nesse momento para ler esse tópico. Quando você digita na barra de endereço [Ô]www.asdrubalcorp.com.br[Ô], uma conexão é estabelecida e a página inicial(texto HTML+CSS+Javascript), vai ser enviado ao seu browser, que interpreta esses dados, exibindo a página. Simples assim. Dados, sendo enviados e recebidos pelo protocolo de comunicação HTTP.
Uma WebAPI é praticamente a mesma coisa, a diferença é que os dados enviados e recebidos não são HTML, mas sim, dados mesmo. Sejam eles objetos XML ou JSON, o que trafega é texto. Internamente, a WebAPI, traduz isso para as classes internas. Por exemplo, quando você requisita uma lista de clientes, ao invés do servidor enviar um HTML, vai ser enviado uma lista de dados em formato XML ou JSON, que na sua aplicação serão traduzidas para classes e/ou lista de objetos. Daí a importância do uso correto de OOP.
Na navegação de páginas, quando você digita um endereço, os dados correspondentes ao documento HTML requisitado serão enviados pelo servidor e recebidos e interpretados pelo seu browser. Logicamente, [Ô]www.asdrubalcorp.com.br/contato.html[Ô] e [Ô]www.asdrubalcorp.com.br/telefones.html[Ô] são documentos diferentes. O mesmo ocorre com uma WebAPI. Ela trabalha com rotas, algo quase igual ao [Ô]endereço[Ô] que você digita para navegar. Então, [Ô]www.asdrubalcorp.com.br/api/clientes[Ô], retornaria uma lista de clientes, já [Ô]www.asdrubalcorp.com.br/api/clientes/5[Ô], traria somente os dados do cliente cujo código seja [Ô]5[Ô]. Existem maneiras diferentes de se utilizar isso, que aliás é chamado de URI. Uma delas é como mostrei acima, onde o [Ô]5[Ô] do final é um parâmetro. Poderia ser também [Ô]www.asdrubalcorp.com.br/api/clientes?id=5[Ô]. Tanto um quanto outro traria dados do cliente cujo id seja [Ô]5[Ô]. Esses parâmetros ficam à critério do desenvolvedor, que pode até mesmo oferecer ambos os modelos. Não é incomum a utilização de vários parâmetros, veja o endereço desse tópico, lá na barra de endereço. Ele tem 4 parâmetros: Modulo, metodo, id e página. Esses parâmetros estão separados pelo caracter [Ô]&[Ô]. Quando o documento [Ô]index.php[Ô] é chamado usando esses parâmetros, uma consulta ao banco de dados é feita usando esses parâmetros e as postagens que se enquadram nesse critério são [Ô]concatenadas[Ô] no documento HTML base, que funciona com [Ô]placeholders[Ô], mais ou menos assim:

{cabeçalho: leia dados de [Ô]cabecalho.html[Ô]}
{corpo: leia dados de [Ô]corpo.html[Ô], onde a seção {postagens} seja o conteúdo de [Ô]Select * from postagens Where modulo = [Ô] + parametro.modulo + [Ô] and metodo =[Ô] + parametro.metodo + [Ô] and id = [Ô] + parametro.id}
{rodapé: leia dados de [Ô]rodape.html[Ô]}


Isso tudo vai gerar o documento HTML que você está vendo agora, que é enviado do servidor para seu computador e interpretado pelo seu browser e finalmente exibido. Quando esse processo todo termina e a página é finalmente exibida para você, a conexão acabou e qualquer coisa extra deve ser re-enviada para o servidor e o processo todo se repete. Por isso, que em se tratando de programação web, dizemos que ela é [Ô]desconectada[Ô], pois ao contrário de WinForms, não existe uma conexão direta da página para o banco de dados. Tudo deve ser enviado através de URI[ô]s, que serão interpretadas no servidor e enviadas à você.
Com uma WebAPI, é algo parecido, a diferença é que ela retorna somente dados, não textos HTML e esses dados podem ser usados por qualquer aplicação que possa fazer uma chamada http, como no caso do .NET, a classe HttpClient, faz parte do framework, até mesmo uma aplicação console pode consumir de uma WebAPI sem dificuldade alguma. Pode parecer loucura, mas é isso mesmo, chamar dados de uma página web ou WebAPI à partir de uma aplicação console, mas é totalmente possível sim.
Páginas web, podem conter chamadas AJAX, que são chamadas à uma WebAPI que são executadas utilizando uma espécie de cliente http, fornecido pelo framework javascript, utilizado pelo seu browser. O AJAX, nada mais é que consumir um método qualquer da WebAPI, o mesmo processo acima, onde uma URI vai ser fornecida, chamada, executada e interpretada pelo servidor, que vai devolver os dados referentes à URI chamada, no formato(XML ou JSON) que a WebAPI trabalhar, o que fica a critério do programador.

Acho que com isso se pode ter uma idéia de como funciona.
F001E 25/11/2015 16:46:09
#454396
Citação:

A conexão com o banco de dados deverá ser a mesma utilizada em Windows Forms, pois não há diferença, a única recomendação que te dou é utilizar a fundo orientação a objetos, pois os controles do WPF podem ser muito dinâmicos quando se utilizado POO, dando uma liberdade e ganho de recursos se comparado ao Windows Forms.



Entendi GUIMORAES123 sobre a conexão, achava que fosse totalmente diferente. Estruturei um Project aqui em MVVM (Model, View, View-Model).
Porque estou no WPF. é que a empresa onde trabalho se aventurou em Órgãos Públicos e tem dado certo e ganhamos uma licitação para desenvolver um sistema desktop mas em WPF, exigência deles, então agora é começar.
GUIMORAES123, percebi que não existe mais MDIContainer onde criava um form pai com seus filhos e no WPF como fica isso ? Achei uns exemplos onde você faz os wpf filhos com User Control (WPF). Como você trata essa questão ?
GUIMORAES 25/11/2015 17:12:50
#454397
F001E,
Exatamente desta forma que mencionou, utilizando user control.

Crio uma grid dentro da Janela Principal, e vou chamando as user control.
Ex:

gridQueIraReceberUserControl.Children.Clear();
UserControl controle = new UserControl();
gridQueIraReceberUserControl.Children.Add(controle);


Para remover a user control
  
((Grid)this.Parent).Children.Remove(this);


Um outro ponto interessante é utilizar uma ViewBox, assim os controles podem ser redimensionados de acordo com o tamanho da tela, independente da resolução.

Utilizo muito esta toolkit para UI, e recomendo, pois pode ser modificada.
http://mahapps.com/controls/
F001E 26/11/2015 08:23:22
#454409
Legal....começar estudar WPF agora.
Tópico encerrado , respostas não são mais permitidas