2009-12-03 8 views
1

Salutations aux illuminés!Comment afficher les pourcentages avec ContentStringFormat?

Je joue sur cette question depuis plusieurs heures maintenant, mais n'a pas réussi (peut-être parce que je suis tout à fait nouveau pour WPF):

J'ai un DataGrid dont DataContext est lié à un DataTable. Le DataGrid est de taille fixe et son but est de contenir une table de valeurs y (x) (c'est-à-dire que les en-têtes affichent les valeurs x et les valeurs y correspondantes sont collées du presse-papiers et affichées dans le premier DataGridRow). Jusqu'ici tout va bien. Les valeurs sont collées (assignées en tant que chaînes à dataTable.rows [0] [i] où i = 0 ... n) parfaitement et bien affichées.

Mais les chiffres affichés sont des pourcentages des valeurs et je veux qu'ils soient affichés en tant que tel:

« 0.18 » devient « 18% »

Alors, j'ai décidé de faire face à cela en utilisant un style qui doit être appliqué à tous les objets DataGridCell:.

<Style TargetType="{x:Type Controls:DataGridCell}"> 
    <Style.Setters> 
     <Setter Property="ContentStringFormat" Value="{}{0:P}"/> 
     <Setter Property="Foreground" Value="DarkGray"/> 
     <Setter Property="Background" Value="Yellow"/> 
    </Style.Setters> 
</Style> 

Ensuite, l'arrière-plan et les couleurs de premier plan sont adoptées bien, mais les chiffres sont toujours affichés sous forme de décimales (ie « 0,18 » lit encore « 0,18 »

Comment puis-je résoudre ce problème?

Merci à l'avance Joerg

Répondre

4

je crois que vous pouvez spécifier StringFormat avec définition de liaison pour la colonne DataGrid. Smth. comme ceci:

<DataGridTextColumn Header="Column_Header" Binding="{Binding Path=Field_Name, StringFormat='{}{0:P}'}"/> 

espérons que cette aide, ce qui est

+0

Salut Serge, je suis loin de mon code original et construit un exemple plus simple où j'ai créé quelques DataGridTextColumns à la main dans XAML. Un était lié à une colonne numérique d'un DataTable. Dans cette configuration, votre indice a très bien fonctionné et j'ai finalement obtenu la valeur formatée désirée de "18,0%". Maintenant, je dois encore savoir comment modifier l'automatique obligeraient AutoGenerateColumns du DataGrid est réglé sur « True » à nouveau ... mais c'est un nouveau poste si je ne :-) Cordialement Joerg –

0

Je pense que le problème est que le type de données que vous essayez de format n'est pas un numéro. Essayez de changer le type de données de la table en double ou en un autre type numérique.

Voici un exemple pour illustrer mon point:

string stringValue = "0.18"; 
string formattedStringValue = String.Format("{0:P}", stringValue); 
// formattedStringValue = 0.18 

double doubleValue = 0.18; 
string formattedDoubleValue = String.Format("{0:P}", doubleValue); 
// formattedDoubleValue = 18.00 % 
+0

Salut Andrew , merci pour votre réponse. En fait, vous avez raison quand on parle de cordes pures, mais votre indice ne m'a pas aidé dans ce cas. Au moins, cela n'a pas été le cas lorsque j'ai essayé de définir l'attribut DataType du DataTable ou du DataColumn. La valeur formatée résultante a continué à lire "0.18". Cordialement Joerg –

Questions connexes