2009-07-08 7 views
3

Ich habe ein Datenobjekt, das IDataErrorInfo implementiert, aber die Validierungslogik ist ein bisschen langsam. Nicht so langsam, aber langsam genug, du willst es nicht oft genug nennen. In meiner Anwendung wird eine Liste dieser Objekte in einem DataGridView-Steuerelement angezeigt. Das Grid ist schreibgeschützt und enthält nur gültige Datenobjekte. Die DataGridView besteht jedoch darauf, IDataErrorInfo.this [string columnName] für jede Zelle im Grid aufzurufen, was das Neuzeichnen sehr langsam macht.Wie stoppen Sie den Aufruf von DataGridView IDataErrorInfo.this [Zeichenfolge Spaltenname] get?

Ich habe versucht, ShowCellErrors und ShowRowErrors auf false zu setzen, aber es ruft immer noch IDataErrorInfo.this [string columnName]. Irgendwelche Ideen, wie ich es aufhebe, Objekte zu validieren, die ich weiß, sind gültig?

Antwort

1

Als billige Option ... vielleicht ein Flag, das Sie auf Ihre Objekte setzen können, das die Validierung deaktiviert und immer "" von den 2 IDataErrorInfo Methoden zurückgibt?

obj.ValidationEnabled = false; // etc 

Wenn es ein großes Problem Sie einen Pass-thru-Objekt vorstellen könnte, dass die tatsächliche Art imitiert hat, aber nicht IDataErrorInfo implementieren. Entweder durch manuelles Codieren einer Fassade oder durch eine erfinderische Verwendung von System.ComponentModel (vermutlich ITypedList oder TypeDescriptionProvider; beachten Sie, dass es sich nicht nur für einen einzigen Typ lohnt - das manuelle Schreiben einer Klasse wäre einfacher).

+0

Ich hatte darüber nachgedacht, aber ich hoffte, dass es einen einfacheren Weg gab. –

Verwandte Themen