none
Coluna decimal datagrid WPF RRS feed

  • Pergunta

  • Olá Pessoal,

    Estou com um pequeno problema. Tenho um arquivo XML onde existem colunas decimal que tem o valor decimal, conforme abaixo representado.

    <debito>18.36</debito>

    <saldo>-17.36</saldo>

    O problema é que quando seto no datagrid do WPF o valor de 18.36 fica como 1836,00. Mas quando quando uso windows form fica normal. Sei que alguma configuração de culture mas não encontrei. Alguém poderia me ajudar ? Fico agradecido. 

     

    quarta-feira, 3 de agosto de 2011 20:05

Respostas

  • Provavelmente é isso mesmo, a cultura.

    O que pode estar acontecendo é a propriedade CurrencyDecimalSeparator da instancia da classe NumberFormatInfo da UIThread é Virgula, e qdo vc seta um número com ponto ele ignora o ponto e resulta em um número inteiro.

    Para testar, no Construtor da Window (antes de qq elemento seja renderizado) sete a UIThread para en-US(que tem o decimal separator como ponto), se o resultado estiver correto, é só avaliar um esquema para mudar a persistência no XML, ou algo que converta para a cultura desejada


    Allan Tavares - Desenvolvedor Pleno - Spread Systems/Banco do Brasil
    sexta-feira, 5 de agosto de 2011 17:40

Todas as Respostas

  • Bom dia Ivan,

    Antes de tudo preciso saber de qual maneira você está populando o DataGrid, mas segue um exemplo talvez ajude:

    xaml:

    <DataGrid Name="PedidoVenda" ItemsSource="{Binding Path=Elements[track]}" >
          <DataGrid.Columns>
            <DataGridTextColumn Header="PRODUTO" Binding="{Binding Path=Element[descricao].Value}"/>
            <DataGridTextColumn Header="QTD" Binding="{Binding Path=Element[qtd].Value}"/>
            <DataGridTextColumn Header="VALOR" Binding="{Binding Path=Element[valor].Value}" />
          </DataGrid.Columns>
    </DataGrid>
    

    C#:

    XElement xmlVenda = XElement.Load("arquivo.xml");
    PedidoVenda.DataContext = xmlVenda;
    

    Arquivo.xml:

    <data>
     <pedido>
      <descricao>Software</descricao>
      <qtd>1</qtd>
      <valor>18.36</valor>
     </pedido>
    </data>
    

    Espero ter ajudado!

     

    sexta-feira, 5 de agosto de 2011 12:31
  • Provavelmente é isso mesmo, a cultura.

    O que pode estar acontecendo é a propriedade CurrencyDecimalSeparator da instancia da classe NumberFormatInfo da UIThread é Virgula, e qdo vc seta um número com ponto ele ignora o ponto e resulta em um número inteiro.

    Para testar, no Construtor da Window (antes de qq elemento seja renderizado) sete a UIThread para en-US(que tem o decimal separator como ponto), se o resultado estiver correto, é só avaliar um esquema para mudar a persistência no XML, ou algo que converta para a cultura desejada


    Allan Tavares - Desenvolvedor Pleno - Spread Systems/Banco do Brasil
    sexta-feira, 5 de agosto de 2011 17:40