Usuário com melhor resposta
Binding + StringFormat no XAML

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
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
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
-
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
- Editado Andrey Gonçalves dos Santos sábado, 10 de novembro de 2012 18:44