Question

Je ne peux pas comprendre comment ajouter le paramètre de format à la colonne DataGrid suivante. Je dois montrer le nombre avec deux décimales.

J'ai un DataGrid silverlight que j'ajouter des colonnes dynamiquement. Je crée la colonne et appliquer une liaison dynamique (que je connais des œuvres)

    public static DataGridTextColumn CreateFloatColumn(int index, string fieldName, string header, string description)
    {
        DataGridTextColumn column = new DataGridTextColumn();
        column.Header = header;
        column.HeaderStyle = BuildColumnHeaderStyle(description);
        Binding newBinding = new Binding("floatValuesList[" + index + "]");
        column.Binding = newBinding;
        column.CellStyle = BuildCellStyle(fieldName, description);
        return column;
    }

Maintenant, je dois aussi formater la valeur. Dans ce cas, il est une valeur de flotteur étant montré. Comment puis-je appliquer le formatage à la liaison? À ce stade, tout ce que je veux est le nombre et deux points de décimales pour montrer, mais je voudrais que ce soit un peu flexible et laissez-moi montrer un nombre variable de points décimaux.

(Edit: Enlevé concept IValueConverter chaîne pour garder le plus propre question)

Était-ce utile?

La solution

Je déteste répondre à ma propre question, et je pense que j'induisait en erreur dans la façon dont j'ai ajouté une solution potentielle à l'aide d'un convertisseur de valeur à ma question initiale - désolé à ce sujet. La solution se révèle être simple. Vous passez la chaîne de format ainsi que la liaison.

        column.Binding.StringFormat = "0.00";

Voici la solution complète

    public static DataGridTextColumn CreateFloatColumn(int index, string fieldName, string header, string description)
    {
        DataGridTextColumn column = new DataGridTextColumn();
        column.Header = header;
        column.HeaderStyle = BuildColumnHeaderStyle(description);
        column.Binding = new Binding("floatValuesList[" + index + "]");
        column.Binding.StringFormat = "0.00";
        column.CellStyle = BuildFloatCellStyle(fieldName, description);
        return column;
    }

Autres conseils

Vous devriez être en mesure de le faire: newBinding.ConverterParameter = "formatString";

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top