none
Binding + StringFormat no XAML RRS feed

  • Pergunta

  • Boa Tarde Pessoal

    Possuo um ListView onde um dos valores exibidos é "Moeda" , porém como faço binding ele exibe o valor da mesma forma que está gravado e eu gostaria de formatar essa valor. Como posso fazer ?

    Segue meu XAML:

    <StackPanel Orientation="Horizontal">
                                            <TextBlock Text="Valor Total - "  FontSize="30" FontWeight="Bold"  Width="84" Height="46" />
                                            <TextBlock Text="{Binding ValorTotal}"  FontSize="30" FontWeight="Bold"/>
      </StackPanel>

    Como podem perceber o TextBlock que exibe o valor está fazendo um Binding com o ValorTotal (nome da propriedade do meu List que alimenta a ListView). E gostaria de saber como posso formatar a exibição desse valor.

    Grato.


    Brian Souza - Análise e Desenvolvimento de Sistemas

    sexta-feira, 9 de novembro de 2012 14:08

Respostas

  • Consegui algum resultado utilizando:

    Binding ValorTotal,StringFormat=F2

    Se alguém souber de alguma outra forma, posta ae.


    Brian Souza - Análise e Desenvolvimento de Sistemas

    • Marcado como Resposta Brian Souza sexta-feira, 9 de novembro de 2012 14:39
    sexta-feira, 9 de novembro de 2012 14:39

Todas as Respostas

  • Consegui algum resultado utilizando:

    Binding ValorTotal,StringFormat=F2

    Se alguém souber de alguma outra forma, posta ae.


    Brian Souza - Análise e Desenvolvimento de Sistemas

    • Marcado como Resposta Brian Souza sexta-feira, 9 de novembro de 2012 14:39
    sexta-feira, 9 de novembro de 2012 14:39
  • Brian, olha este exemplo que deve ajudar:

    public class ListaCheckpoints : List<clsListaCheckpointsBinding>
            {
                public ListaCheckpoints(Int32 ListaCodigo)
                {
                    using (CheckListControlContext ctx = new CheckListControlContext(App.sConn))
                    {
                        var query = from x in ctx.CHKkCheckpoints
                                    where x.LstCodigo == ListaCodigo
                                    orderby x.CkpDescricao
                                    select x;
    
                        foreach (var item in query)
                        {
                            Add(new clsListaCheckpointsBinding
                            {
                                checkListaCodigo = item.LstCodigo,
                                checkCodigo = item.CkpCodigo,
                                checkDescricao = item.CkpDescricao,
                                checkQuantidade = Convert.ToDecimal(item.CkpQuantidade.Value),
                                checkValor = item.CkpValor.Value,
                                checkValorApresentacao = item.CkpValor.Value.ToString("C"),
                                checkStatus = item.CkpStatus,
                                checkUnidadeMedidaCodigo = item.CHKkUnidadeMedida.UndCodigo,
                                checkUnidadeMedidaAbreviacao = item.CHKkUnidadeMedida.UndAbreviacao,
                            });
                        }
                    }
                }
            }
    
            public class clsListaCheckpointsBinding
            {
                public Int32 checkListaCodigo { get; set; }
                public Int32 checkCodigo { get; set; }
                public String checkDescricao { get; set; }
                public Decimal checkQuantidade { get; set; }
                public Decimal checkValor { get; set; }
                public String checkValorApresentacao { get; set; }
                public Int32 checkStatus { get; set; }
                public Int32 checkUnidadeMedidaCodigo { get; set; }
                public String checkUnidadeMedidaAbreviacao { get; set; }
            }

    No XAML você faz referência à classe com a formatação:

    <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding checkQuantidade}" Style="{StaticResource PhoneTextLargeStyle}"></TextBlock> <TextBlock Text="{Binding checkUnidadeMedidaAbreviacao}" Margin="5,0,0,0" Style="{StaticResource PhoneTextLargeStyle}"></TextBlock> <TextBlock Text="{Binding checkValorApresentacao}" Margin="50,0,0,0" Style="{StaticResource PhoneTextLargeStyle}" HorizontalAlignment="Right"></TextBlock>

    </StackPanel>

    Marquei em negrito as linhas que você precisa observar.

    Importante lembrar que na hora de gravar um valor decimal ou data, precisa utilizar o InvariantCulture para que a gravação e leitura destes campos seja sempre correta:

    decValorUnitario = Convert.ToDecimal(this.inputValorGastoUnitario.Value.Trim(), System.Globalization.CultureInfo.InvariantCulture);

    Abraço


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo


    sábado, 10 de novembro de 2012 18:39