2016-06-27 24 views
0

Ich verwende das WPF DataGrid, um Daten von einer SQL Server-Ansicht anzuzeigen. Ich stelle nur ItemSource zur Verfügung, um Spalten automatisch zu erzeugen und Daten anzuzeigen.Ändern des Dezimalformats in WPF DataGrid zur Laufzeit

Für eine numerische Spalte muss der Benutzer die Anzahl der angezeigten Dezimalstellen ändern können.

Nach einer tiefen Suche habe ich gefunden, die einzige Lösung ist die StringFormat in einem AutoGeneratingColumn Event-Handler zu setzen.

Aber ich muss die StringFormat zur Laufzeit ändern. Könntest du mir dabei helfen?

+0

Sie können einen Konverter versuchen. –

+0

Ich frage mich, ob es dafür eine einfache Lösung gibt. Converter scheint irgendwie künstlich zu sein. –

+0

Sie können InotifyPropertyChanged im Feld des POCO implementieren, in dem die Daten gespeichert sind, und die Werte im Code hinter oder im Viewmodel ändern. Vergessen Sie nicht, die Bindung in der XAML als TwoWay zu markieren. In jedem Fall hat @Ayyappan recht und ich denke, dass dies in einem ValueConverter besser gemacht wird. – ssanga

Antwort

1

Ich habe herausgefunden, wie automatisch generierte Bindungen zu ersetzen und Formatierung im laufenden Betrieb hinzufügen, ohne Konverter zu verwenden. Dieses Codeformat der Spalte der aktuell ausgewählten Zelle

DataGrid dg; // Your DataGrid 
var column = (DataGridTextColumn)dg.CurrentCell.Column; // Selected cell's column 
var format = column.Binding.StringFormat; 
var bind = new Binding(column.Header.ToString()); // Bind to the same column of underlying Source 
bind.Mode = BindingMode.OneWay; 
bind.StringFormat = "F2"; // Two decimal places, add your code here 
column.Binding = bind;// Set new binding 
Verwandte Themen