none
Passando Variáveis para XAML RRS feed

  • Pergunta

  • Fala pessoal, tudo bom?

    Dessa vez, venho até vocês com uma dúvida que será essencial nas minhas próximas aplicações, e ainda não sei muito bem como funciona.

    Quero saber como devo fazer para um determinado TextBlock (por exemplo) ter como Texto/Conteúdo o valor de uma String ou uma Inteira qualquer...

    Ao mudar o valor da variável, o conteúdo do meu TextBlock mudaria também, etc.

    Como poderia fazer isto?

    Obrigado, amigos.

    sexta-feira, 22 de junho de 2012 00:17

Todas as Respostas

  • Você quer que somente uma parte da string exiba no seu textbox?
    sexta-feira, 22 de junho de 2012 16:22
  • sexta-feira, 22 de junho de 2012 17:13
    Moderador
  • Data binding amigo!


    Atc, Fabriccio Bernardes.

    quinta-feira, 28 de junho de 2012 18:32
  • Rafael, você poderá fazer por Binding ou alterando o valor diretamente. Veja:

     <controls:PanoramaItem Header="hoje">
                    <!--Double line list with text wrapping-->
                    <StackPanel Margin="0,-20,0,0">
                        <TextBlock x:Name="tblSomaToday" Style="{StaticResource PhoneTextTitle1Style}" Margin="0,-20,0,0"></TextBlock>
                        <ListBox x:Name="lstToday" Height="400" Margin="0,20,-12,0">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Margin="0,0,0,17" Width="432" Height="70">
                                        <TextBlock x:Name="txtValor" Text="{Binding Path=ValorToday}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" Foreground="{StaticResource PhoneAccentBrush}"/>
                                        <TextBlock x:Name="txtDescricao" Text="{Binding Path=DescricaoToday}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                    </StackPanel>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </StackPanel>
                </controls:PanoramaItem>

    O primeiro TextBlock (tblSomaToday) altero o texto diretamente do C# com this.tblSomaToday.Text = "Texto desejado"

    Os demais, como o txtValor, cria uma classe no C#, conforme exemplo abaixo, para alimentar através do Text="{Binding Path=ValorToday}"

    /// <summary>
        /// Classe para atualização da lista de LANÇAMENTOS DO DIA
        /// </summary>
        public class clsListaTodayBinding
        {
            public string ValorToday { get; set; }
            public string DescricaoToday { get; set; }
            public string TipoToday { get; set; }
            public string ValorTodayCalc { get; set; }
        }
    
    
    /// <summary>
            /// Classe de carga da lista de LANÇAMENTOS DO DIA
            /// </summary>
            public class ListaToday : List<clsListaTodayBinding>
            {
                public ListaToday()
                {
                    using (FingersOnFinanceContext ctx = new FingersOnFinanceContext(sConn))
                    {
                        var query = from x in ctx.FOFkLancamentos
                                    where x.LctDataLancamento == DateTime.Today
                                    orderby x.LctNumero descending 
                                    select x;
                        
                        foreach (var l in query)
                        {
                            Add(new clsListaTodayBinding { ValorToday = l.LctValor.Value.ToString("C"), DescricaoToday = l.LctDescricao.ToString(), TipoToday = l.FOFkCategoriaDespesa.CatTipo, ValorTodayCalc = l.LctValor.Value.ToString(), });
                        }
                    }
                }
            }
    
    
     private void AtualizaLista()
            {
                this.lstToday.ItemsSource = new ListaToday();
            }

    Andrey Kurka

    quarta-feira, 4 de julho de 2012 02:34