WPF DataGrid-Zellenstringformat als Stil oder Vorlage

8

Ich habe verschiedene Möglichkeiten ausprobiert, um das Format einer Zelle in einem WPF DataGrid (das mit .NET 4 bereitgestellt wird) aus dem Weg zu räumen:

  • ein Datenkonverter,
  • die Bindungseigenschaft "StringFormat" in einem Stil,
  • die Bindungseigenschaft "StringFormat" in einer Datenvorlage.

Ich werde meine Versuche beschreiben, da dies jemand anderen helfen könnte, und ich hoffe, dass jemand mir Rat geben kann, um diese Lösungen zu verbessern. Beachten Sie, dass ich ziemlich neu in WPF bin ...

Das erwartete Verhalten besteht darin, dass die Zellenzeichenfolge für die Anzeige in einem bestimmten Format wie "1,234,567" formatiert ist, aber beim Bearbeiten der Zelle als "1234567" (Standardformatierung) formatiert sein sollte. Als ich versuchte, einen Datenkonverter zu verwenden, fand ich keine Möglichkeit, die Standardformatierung bei der Bearbeitung zu verwenden. Daher konzentrierte ich meine Energie auf Stile und Vorlagen.

Bei einem Stil sieht die Definition der DataGridTextColumn wie folgt aus:

%Vor%

Das Verhalten ist genau das, was erwartet wird. Allerdings kann ich diesen Stil nicht ausklammern und mehrfach verwenden, wegen der Bindung. Um das Faktorisierungsproblem zu lösen, habe ich eine DataGridTemplateColumn und Datenvorlagen verwendet. Hier ist meine DataGridTemplateColumn-Definition:

%Vor%

Und die ControlTemplate-Definition:

%Vor%

Die Verwendung von Datenvorlagen löst das anfängliche Problem der Formatierung von DataGrid-Zellen, aber die Verwendung einer Steuerelementvorlage führt zu ergonomischen und visuellen Problemen. Zum Beispiel die Doppel-Tab-Navigation, die durch die Kontrollschablone verursacht wird (an vielen anderen Stellen diskutiert), und das Aussehen des Bearbeitungs-Textfelds (das ich mit Randstärke, Füllung und den anderen Eigenschaftseinstellungen zu korrigieren versuche).

Spezifische Fragen zu diesem Thema sind:

  • Kann ein Datenkonverter verwendet werden, um die Zeichenfolge für die Anzeige zu formatieren und die Standardformatierung für die Ausgabe zu verwenden?
  • Ist es möglich, den DataGridTextColumn-Stil herauszufiltern und trotzdem die Bindungsquelle anzugeben?
  • Gibt es eine Möglichkeit, eine DataGridTemplateColumn-Datei zu verwenden, sie aber einfach wie eine DataGridTextColumn-Datei aussehen zu lassen?
Thibault 07.06.2011, 01:13
quelle

1 Antwort

3

Erstellen Sie Ihre eigene benutzerdefinierte DataGridTextColumn und erstellen Sie Bindungen, die dem Element und dem EditingElement zugewiesen werden (einer davon mit einem Konverter, von denen einer ohne).

Der Konverter formatiert die Zeichenfolge so, dass sie mit Kommata wie eine Dezimalzahl aussieht.

%Vor%

Ich habe nicht verstanden, wie die von Ihnen gepostete Formatierungszeichenfolge funktioniert, also habe ich eine einfache geschrieben. Wenn Sie mehr Dezimalstellen haben wollen, sortieren Sie sie einfach im Konverter aus.

Sie müssen jetzt nur einen Verweis auf den Namespace in Ihrer XAML erstellen und dann eine Spalte im DataGrid erstellen.

Dann sollte alles gut sein

u_u

    
Jason Ridge 16.03.2012, 14:16
quelle