logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!

Criando uma aplicação WPF – Parte 5

Colocado por Alexandre Tadashi na(s) categoria(s): 1, 4, 6, app, AR, arte, BI, blog, Blogs, Botões, carregar, class, classe, classes, código, collection, control, dados, Design, designer, Download, DRE, for, framework, Frameworks, Google, IE, if, image, int, interface, Introdução, layout, lista, mg, monitor, mudanças, O, on, padrão, Projetos, RIA, Ria’s Geral, silverlight, TAT, Tema, Tutoriais, Tutorial, Twitter, UI, UX, vs, window, Wordpress, WPF, XAML, XP em 09 8th, 2010 | Sem comentários

A camada View da aplicação é onde vamos aplicar o padrão MVVM (Model-View-ViewModel) , adicione um projeto do tipo WPF Application em sua Solution, coloque o nome de Contatos.View.

Crie duas pastas neste projeto, uma com o nome de Apoio, onde vamos inserir duas classes de apoio ao projeto, a outra pasta coloque o nome de ViewModel, onde vamos criar a classe que servirá de ponte entre a View e o Modelo.

Adicione uma classe ao projeto com o nome de ContatoViewModel:

No arquivo MainWindow.xaml vamos criar o layout da aplicação, não vou me preocupar com o designer pois não é o foco deste tutorial, adicione quatro objetos do tipo Button, três TextBlock, três TextBox e uma ListBox, deixe conforme a Figura abaixo:

Na pasta Apoio vamos adicionar duas classes escritas por Josh Smith, um dos gurus do WPF, seu blog é http://joshsmithonwpf.wordpress.com/ , como o foco do tutorial e apresentar uma introdução ao conceito, não vou utilizar de frameworks, o que pode ser interessante em um projeto real, mas para este tutorial, quanto mais simples, melhor para entender, essas duas classes são simples, a primeira servirá de base para a classe ContatoViewModel e a segunda de apoio ao suporte de ICommand.

Faça o download das classes aqui.

Na pasta ViewModel crie um arquivo do tipo Class com o nome de ContatoViewModel e adicione as duas referências aos dois projetos que criamos anterioramente:

Agora vamos herdar algumas funcionalidades da classe de apoio chamada BaseViewModel que implementa a interface INotifyPropertyChanged, que permite monitorar as mudanças que ocorrem em algumas propriedades na classe ContatoViewModel.

public class ContatoViewModel : BaseViewModel

Crie uma instância do acesso ao modelo a dados no inicio da classe ContatoViewModel, uma ObservableCollection chamada listaContatos, que auxiliará na ligação através de databinding com o ListBox e uma entidade Contato chamada contatoSelecionado, que também estará auxiliando na ligação através de databinding ao ListBox e ao DataContext de um Stackpanel, este Stackpanel é o layout control que contém os TextBox com o databinding das propriedades.

        ContatoDAO _base = new ContatoDAO();

        //Lista de Contatos        ObservableCollection listaContatos;

        //Contato Selecionado        public Contato contatoSelecionado = null;
No construtor da classe ContatoViewModel vamos carregar os dados do modelo para uma ObservableColletion alimentando a variável listaContatos.

            # region Dados

            //Carrega todos os contatos cadastrados            ObservableCollection lista =            new ObservableCollection();

            IQueryable rev = _base.GetAll();

            foreach (var item in rev.ToList())            {                lista.Add(item);            }

            listaContatos = lista;

            # endregion

Agora chegou o momento de criar os métodos que serão utilizados como databinding na View :

        # region Propriedades

        //Método que retorna uma lista de contatos        //que será utilizado        //na View via databinding                public ObservableCollection ListaContatos        {            get            {                return listaContatos;            }        }

        //Método que retorna um contato        //Selecionado que será utilizado        //na View via databinding        public Contato ContatoSelecionado        {            get { return contatoSelecionado; }            set            {                //seta o contato selecionado                contatoSelecionado = value;

                //Avisa a View que a                 //propriedade foi alterada                OnPropertyChanged("ContatoSelecionado");

            }

        }

        # endregion

No code-behind do arquivo MainPage.xaml, dentro do método MainWindow(), crie uma instância do ContatoViewModel e ligue ao DataContext do Layout Control Grid.

        public MainWindow()        {

            InitializeComponent();

            ContatoViewModel vm = new ContatoViewModel();

            LayoutRoot.DataContext = vm;

         }

No código XAML que cria a ListBox vamos ligar duas propriedades através de databinding , a primeira é a propriedade ItemsSource, criando um Binding com ListaContatos, a segunda propriedade é o SelectedItem, criando um Binding com ContatoSelecionado.

Os TextBox estão posicionados dentro de um Layout StackPanel, a proprieadade DataContext está ligada através de Binding com o ContatoSelecionado, cada TextBox tem sua propriedade Text ligado com as propriedades da entidade Contato.

Copie o App.config do projeto Contatos.Data para a projeto Contatos.View, marque a camada View como Set as StartUp Project, adicione algumas informações na base de dados e em seguida execute a aplicação, o ListBox será carregado e ao clicar em um item, os TextBox serão alimentados com as informações do item selecionado.

Na próxima parte do tutorial estaremos finalizando a série, inserindo as funcionalidades dos botões.

Twitter: @atsh2



Veja o post original no blog do autor aqui!  

Alexandre Tadashi

Escrito por Alexandre Tadashi @ http://alexandretadashi.net/
Saiba mais sobre o autor na sua pagina de perfil
Outros posts do autor:
» Silverlight.net.br - novo domínio
» Deep Zoom - Artigo easy .net Magazine 7
» Download Silverlight 5 and Tools

Deixe um comentário



Spam Protection by WP-SpamFree

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2756 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com