none
Consumindo WCF no WP7 não funciona RRS feed

  • Pergunta

  • Galera,

    Criei um Web Service e hospedei no Azure, ele se comunica no SQL Azure e traz uma lista de pessoas pra mim neste método. No desenvolvimento pra Windows Phone eu consegui comunicar com o Web Service e no modo debugging vejo que realmente ele tra essa lista. O problema é criei no xaml um ListBox com ListBox.ItemTemplete para listar esse resultado, mas não mostra, já coloquei blocos try/catch pra captura exception e nada, simplesmente ele fecha o debug e não mostra o erro. Aguém teve ou tá tendo esse problema? Como conseguiu solucionar? Segue código:

    No MainPage.xaml.cs

    public MainPage()
            {
                InitializeComponent();
                lstChildren.ItemsSource = children;
                Load_WebService();
                DataContext = App.ViewModel;
                this.Loaded +=new RoutedEventHandler(MainPage_Loaded);
            }

    public void Load_WebService()
            {
                try
                {
                    ServiceClient proxy = new ServiceClient();

                    proxy.listChildCompleted += new EventHandler<listChildCompletedEventArgs>(proxy_listChildCompleted);

                    proxy.listChildAsync();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

    private void proxy_listChildCompleted(object sender, listChildCompletedEventArgs e)
            {           
                try
                {
                    List<Child> oLista = e.Result.ToList();

                    Load_Children(oLista);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }           
            }

    private void Load_Children(List<Child> lista)
            {
                try
                {
                    if (lista.Count > 0)
                    {
                        foreach (Child valor in lista)
                        {
                            this.children.Add(new ChildCollection() { iDChild = valor.iDChild, name = valor.name, birthday = valor.birthday });
                        }
                    }
                    else
                    {
                        MessageBox.Show("Lista Vazia");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
               
                this.DataContext = children;
            }

    quarta-feira, 21 de março de 2012 09:19

Respostas

  • Thiago,

    Funcionou, o problema era no Binding, estranho o que eu colocava era assim:

    <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="" x:Name="txtBlockName"/>

    Troquei para:

    <TextBlock Text="{Binding Name}" />

    E funcionou com sucesso.

    • Marcado como Resposta IgorWebMaster quinta-feira, 22 de março de 2012 09:37
    quinta-feira, 22 de março de 2012 09:37

Todas as Respostas

  • Igor,

    Por acaso, no seu método proxy_listChildCompleted você chegou a verificar se o e.Error está retornando alguma exceção?

    []s


    Thiago J. Mônaco
    MVP Windows Phone Development
    MCP, MCAD, MCSD, MCDBA, MCTS, MCPD and MCT Professional
    Scrum Developer I and Professional Scrum Master
    http://www.windowsphonebrasil.net
    @thiagojmonaco

    quarta-feira, 21 de março de 2012 12:18
    Moderador
  • Thiago,

    Que detalhe em, vou colocar no debugging e ver se ele mostra alguma coisa, e já já posto o que apareçeu.

    quarta-feira, 21 de março de 2012 13:11
  • Igor,

    Aproveita que vai fazer o Debug e caso o e.Error estaja null, verifique se o seu oLista e children estão sendo preenchidos corretamente.

    Caso tudo esteja preenchido, pode ser que o problema esteja no Binding, que pode estar incorreto.

    []s


    Thiago J. Mônaco
    MVP Windows Phone Development
    MCP, MCAD, MCSD, MCDBA, MCTS, MCPD and MCT Professional
    Scrum Developer I and Professional Scrum Master
    http://www.windowsphonebrasil.net
    @thiagojmonaco

    quarta-feira, 21 de março de 2012 13:45
    Moderador
  • Thiago,

    o e.Error vem null, o oLista vem preenchido, e quando chega no método Load_Children(List<Child> lista), e faz a comparação de lista é maior que 0, perfeito, ele passa e começa adicionar no ObservableCollection<ChildCollection> children = new ObservableCollection<ChildCollection>();

    No debugging o children recebe o valor do foreach (Child valor in lista). No Binding tá igual a Model.

    O mais engraçado, que tá tudo vindo do Azure, tudo perfeito, depois que ele lê o proxy_listChildCompleted(object sender, listChildCompletedEventArgs e), ele dá algum exception, que não consigo capturar, e assim finaliza o debugging e fecha o App.

    Não sei mais o que fazer, o que você pode me ajudar em relação a isso?

    quarta-feira, 21 de março de 2012 21:45
  • Thiago,

    Funcionou, o problema era no Binding, estranho o que eu colocava era assim:

    <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="" x:Name="txtBlockName"/>

    Troquei para:

    <TextBlock Text="{Binding Name}" />

    E funcionou com sucesso.

    • Marcado como Resposta IgorWebMaster quinta-feira, 22 de março de 2012 09:37
    quinta-feira, 22 de março de 2012 09:37