domingo, 22 de agosto de 2010

Criando uma aplicação WPF - Parte 4



Nesta etapa do tutorial podemos separar as entidades geradas pelo T4 em um projeto separado, que posteriormente vamos utilizar na camada visual da aplicação, para realizar essa tarefa, adicione um novo projeto do tipo Class Library em sua Solution, com o nome de Contatos.Entities, em seguida delete o arquivo Class1.cs, pois não vamos utilizá-lo.




Na camada Contatos.Data, localize o arquivo ModeloContato.tt, que contém a classe Contato.cs, e mova o arquivo para a camada Contatos.Entities, para mover, arraste o arquivo com a tecla Shift pressionada e solte na camada Contatos.Entities.

O Resultado será :



Modifique os namespaces da nova camada, de Contatos.Data para Contato.Entities, e em seguida, na camada Contato.Entities adicione uma referencia a System.Runtime.Serialization.



Na camada Contatos.Data adicione uma referência ao projeto Contatos.Entities.


Se tiver dificuldades em separar as camadas, dê uma olhada neste tutorial:


View e MVVM


O padrão de design MVVM (Model-View-ViewModel) é muito utilizado em aplicações Silverlight e WPF, principalmente em aplicações LOB, apesar de ser um padrão avançado, ele não resolve todos os problemas do desenvolvimento de um projeto, porém proporciona uma forma interessante de separar a camada View da camada Model de sua aplicação.

Resumidamente este padrão proporciona separar o modelo (Model) da interface visual do projeto (View), tanto o WPF como o Silverlight, tem um forte suporte a databinding, com esse modelo o desenvolver poderá trabalhar separado do designer na aplicação, ou seja, o designer terá uma maior flexibilidade, podendo utilizar por exemplo o Expression Blend e se concentrar no layout.

Existem diversas ferramentas disponíveis para você aplicar o padrão MVVM com as melhores práticas para uma aplicação em produção, como por exemplo, o framework MVVM Light Toolkit e o Prism, este último tem uma documentação interessante no link  http://compositewpf.codeplex.com/, porém neste tutorial não vou utilizar nenhum framework, para simplificar, vou criar um exemplo básico,  com o objetivo de explicar o conceito do padrão.

Para separar a View do Model, uma terceira classe será criada, essa classe será a ViewModel, ou seja, será a ponte entre essas duas camadas, o ViewModel pode implementar a interface INotifyPropertyChanged, ICommand, fazer validações, escutar eventos, possibilitar testes direto no ViewModel e fazer a adaptação entre a View e o Model.

Dessa forma a View, mais precisamente o arquivo XAML, fica com o mínimo de code-behind em C#, através de binding, ligamos a View com o ViewModel, dessa forma, por exemplo, o código que estaria dentro do evento click de um botão no code-behind do XAML, estará no ViewModel, sendo ligado através de ICommand, na teoria, ao abrir o code-behind de um arquivo XAML não teríamos códigos em C# para a manipulação dos dados e eventos, dessa forma o layout da aplicação fica mais flexível para sofrer mudanças.

O Padrão tem a seguinte arquitetura:

No próximo tutorial o fechamento desta série.

Dica Silverlight #1: Abrindo arquivos no Microsoft Word




O Silverlight 4 permite acessar objetos COM (Component Object Model), com esse recurso se tornou possível interagir com o Microsoft Office, nesta dica, vou mostrar como abrir um arquivo com extensão rtf no Microsoft Word.

Abra o Visual Studio 2010, crie um projeto Silverlight e arraste um botão, no evento Click do botão vamos codificar para abrir o documento no Word.

Para conseguir acessar o Microsoft Word, a aplicação deverá rodar fora do Browser (OOB),  clique com o botão direito do mouse em seu projeto, e em seguida clique nas propriedades (Properties).

Na aba Silverlight, marque o checkbox “Enable running application out of the browser” e em seguida clique no botão “Out-of-Browser Setting…”.




Marque a opção “Require elevated trust when running outside the browser”, assim sua aplicação poderá acessar o Microsoft Word através de COM Interop.


Adicione o código abaixo no evento Click do botão, o código está comentado para melhor entendimento da rotina :

            //Verifica se o objeto COM está disponível, é confiável
            //e se executando em modo OOB(Out-Of-Browser)
            if (AutomationFactory.IsAvailable &&
                Application.Current.HasElevatedPermissions &&
                Application.Current.IsRunningOutOfBrowser)
            {   
                
                    //Criando um objeto COM com acesso ao Word
                 dynamic word = 
                 AutomationFactory.CreateObject("Word.Application");

                    //Caminho do arquivo rtf
                   object fileName;
                   fileName = "c:\\alexandre\\artigoX.rtf";

                   object missing = System.Reflection.Missing.Value;
                   object readOnly = true;
                   object isVisible = true;

                    //Abre o Documento
                    word.Documents.Open(ref fileName,
                                        ref missing,
                                        ref readOnly,
                                        ref missing,
                                        ref missing,
                                        ref missing,
                                        ref missing,
                                        ref missing,
                                        ref missing,
                                        ref missing,
                                        ref missing,
                                        ref isVisible);


                    //Mostra no Word
                    word.Visible = true;


            }


segunda-feira, 16 de agosto de 2010

Gráficos 3D - Silverlight, WPF e WP7





Existem diversas ferramentas que facilitam a vida do desenvolvedor quando a tarefa é a criação de gráficos para apresentação de dados, essas ferramentas são bem completas e visualmente ricas, geralmente possibilitam criar gráficos de diversos formatos, por exemplo, gráficos de pizza, linhas e colunas, que são os mais comuns e até gráficos combinados na mesma visualização.

Uma das ferramentas mais conhecidas é o Silverlight Toolkit , que além de criar gráficos, tem uma série de outros componentes interessantes, sua licença é a Microsoft Public License (Ms-PL).

O amCharts também é um excelente projeto, tem uma licença comercial e outra free, contém belos gráficos com animações e interações com o usuário, vale a pena dar uma conferida.

Neste artigo vou mostrar como criar um gráfico simples usando a ferramenta Visifire, essa ferramenta tem uma licença comercial e outra GPL, os gráficos são visualmente ricos, animados e interativos, permite de forma simples a criação de gráficos de atualização online, no site do fabricante tem uma página onde você poderá testar como o gráfico vai ficar.
Faça o download do visifire no site do fabricante, não é necessário instalar nada, o download contém os binários para o WPF, Silverlight e Windows Phone 7.

Crie uma aplicação Silverlight 4 no Visual Studio 2010, adicione uma referência ao binários do visifire para o Silverlight (SL.Visifire.Charts ), no código XAML, dentro do Layout Grid, adicione um elemento do tipo gráfico com o nome de Pizza:


Agora na sua MainPage_Loaded, adicione o código abaixo:

Title titulo = new Title();
titulo.Text = "Gráfico de Pizza";
titulo.FontSize = 40;

Pizza.Titles.Add(titulo);

DataSeries dataSeries = new DataSeries();
dataSeries.RenderAs = RenderAs.Pie;
DataPoint dataPoint;

for (int i = 0; i < 5; i++)
{
        dataPoint = new DataPoint();
        dataPoint.YValue = 1000 + i;
        dataPoint.LabelText = "Item:" + i;
        dataSeries.DataPoints.Add(dataPoint);
}

Pizza.Series.Add(dataSeries);

Pizza.View3D = true;

O Código acima adiciona o título “Gráfico de Pizza” ao gráfico, depois acrescenta 5 itens que vão compor o gráfico de Pizza, em RenderAs definimos o tipo do gráfico como Pie e por fim habilitamos a visualização em 3D do gráfico.


Sem modificar nada no código fonte em C#, você também poderá criar o mesmo gráfico para WPF e Windows Phone 7, para Windows Phone por exemplo, basta você criar um projeto do tipo Windows Phone Application, se esse tipo de projeto não estiver disponível no seu Visual Studio 2010, instale o seguinte pacote, depois é só fazer uma referência aos binários do visifire para Windows Phone, e adicionar o gráfico da mesma forma que fizemos para o Silverlight.



domingo, 8 de agosto de 2010

Silverlight Toolkit .net Magazine 76





Acaba de ser lançada a nova edição da revista .net Magazine, a edição de número 76, o destaque é a programação com Design Patterns.

Segue a lista de artigos:

• Silverlight Toolkit
• Design Patterns na prática – Parte 1
• Design Patterns
• Code Contracts
• Estimando seus Requisitos
• Pesquisa de objetos na memória
• É possível ganhar dinheiro com licença GPL?(Artigo Exclusivo Digital)

O Robson Fernandes (RIA Software) escreveu junto comigo um artigo sobre o Silverlight Toolkit que está nesta edição da .net Magazine, o Silverlight Toolkit é um conjunto de componentes que enriquece os aplicativos desenvolvidos com a tecnologia Silverlight. Além de conhecer a ferramenta, durante o artigo criamos exemplos práticos de alguns dos principais componentes.