none
Dificuldade com Binding RRS feed

  • Pergunta

  • Boa tarde,,,

    Olá Sr. Programadores, até hoje utilizei bastante os Bindings junto com DataTemplate quando em um conjunto de controles tem somente um objeto de onde extrair os dados

    ex:

    <DataTemplate DataType="{x:Type local:Produtos}"> 

    utilizando Expressions Lambda e aquela outra que não sei o nome que utiliza o "From" e "Select". Enfim, hoje precisei fazer binding e DataTemplate em um contexto de dados que é preenchido em um ObservableCollection, mas dados de duas tabelas tem que relacionamento e a expressão ficou mais ou menos assim.

     (From a in Context.Produtos join b in Context.Grupos on a.CodigoGrupo equals b.CodigoGrupo Select new{ a.Codigo, b.Descricao });

    ObservableCollection é preenchido com os dados corretamente, minha maior dificuldade é no DataTemplate, de todas as formas que já fiz o dados são apresentados, mas de forma incorreta também vem com algumas sintaxe do processo interno.

    Olha imagem.

    Meu posicionamento de campo não foi dessa forma, está sendo apresentado os dados do jeito que está no contexto.

    OBS: A visualização da imagem aqui no site não está legal, mas se for baixada conseguirão ver melhor!

    Desde já agradeço.

    Atenciosamente

    André


    • Editado André Oliver segunda-feira, 12 de agosto de 2013 18:41 ddddd
    segunda-feira, 12 de agosto de 2013 18:40

Respostas

  • Olá André,

    De antemão, uma das coisas que vc está fazendo errado, é tentar atribuir um objeto inteiro a uma properiedade texto (TextBlock.Text), e não uma propriedade do objeto.

    Mas se você puder postar a parte do DataTemplate talvez seja mais fácil pra elucidar o que vc está tentando fazer.



    quarta-feira, 14 de agosto de 2013 00:37
  • Tenta o seguinte.

    Text="{Binding Path=Grupo_codigo, UpdateSourceTrigger=PropertyChange}"

    Text="{Binding Path=Grupo_descricao, UpdateSourceTrigger=PropertyChange}"

    Text="{Binding Path=Produto_codigo, UpdateSourceTrigger=PropertyChange}"

    Text="{Binding Path=Produto_descricao, UpdateSourceTrigger=PropertyChange}"

    As propriedades devem existir no seu DataContext, Pelo que eu vi na imagem as propriedades tem o nome diferente dos que estão acima.

    • Marcado como Resposta André Oliver sexta-feira, 23 de agosto de 2013 02:10
    quinta-feira, 22 de agosto de 2013 14:15

Todas as Respostas

  • Olá André,

    De antemão, uma das coisas que vc está fazendo errado, é tentar atribuir um objeto inteiro a uma properiedade texto (TextBlock.Text), e não uma propriedade do objeto.

    Mas se você puder postar a parte do DataTemplate talvez seja mais fácil pra elucidar o que vc está tentando fazer.



    quarta-feira, 14 de agosto de 2013 00:37
  • Olá fabio, desculpa a demora para responder, mas aqui está o DataTemplate é mais ou menos assim.

            <DataTemplate DataType="{x:Type local:Produtos}">
                <Grid TextBlock.FontFamily="verdana" TextBlock.Foreground="White">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <TextBlock Text="{Binding Grupo_codigo}"/>
                    <TextBlock Grid.Row="1" Margin="10,0,0,0" Text="{Binding Grupo_descricao}"/>
                    <TextBlock Grid.Column="1" Text="Produto"/>
                    <TextBlock Grid.Row="1" Grid.Column="1" Margin="10,0,0,0" Text="{Binding Produto_codigo}"/>
                    <TextBlock Grid.Row="1" Grid.Column="1" Margin="10,0,0,0" Text="{Binding Produto_descricao}"/>
                </Grid>
            </DataTemplate>

    Lembrete: Estou tentando criar um modelo de dados para visualização com dados de duas tabela.

    Atenciosamente

    André


    • Editado André Oliver quinta-feira, 22 de agosto de 2013 12:59 ddd
    quinta-feira, 22 de agosto de 2013 12:59
  • Tenta o seguinte.

    Text="{Binding Path=Grupo_codigo, UpdateSourceTrigger=PropertyChange}"

    Text="{Binding Path=Grupo_descricao, UpdateSourceTrigger=PropertyChange}"

    Text="{Binding Path=Produto_codigo, UpdateSourceTrigger=PropertyChange}"

    Text="{Binding Path=Produto_descricao, UpdateSourceTrigger=PropertyChange}"

    As propriedades devem existir no seu DataContext, Pelo que eu vi na imagem as propriedades tem o nome diferente dos que estão acima.

    • Marcado como Resposta André Oliver sexta-feira, 23 de agosto de 2013 02:10
    quinta-feira, 22 de agosto de 2013 14:15
  • Olá pessoal, consegui resolver meu problema, ao invés de criar um DataTemplate no Resouce setando um tipo de dado, fiz um DataTemplate dentro do próprio controle ListBox ex:

            <ListBox ItemsSource="{Binding CollectionSource}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding Produto_codigo}"/>
                            <TextBlock Text="{Binding Produto_descricao}"/>                        
                            <TextBlock Text="{Binding Grupo_codigo}"/>
                            <TextBlock Text="{Binding Grupo_descricao}"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

    Desta forma funciona perfeitamente, pelos testes que fiz assim não terá nem um problema em mostrar dados modelado de tabelas diferente.

    .: Mas agradeço a atenção de todos que tenha me ajudado :.

    Atenciosamente

    André

    sexta-feira, 23 de agosto de 2013 02:09