Gibt es eine Möglichkeit, eine bestimmte Spalte in einem DataGrid zu verbergen, wenn AutoGenerateColumns = True?
Ich habe eine WPF 4.0 DataGrid gebunden ist an eine DataTable mit AutoGenerateColumns=True. Die Spalten sind dynamisch, aber ich weiß, es ist immer eine Spalte namens " ID " und ich würde gerne ausblenden dieser Spalte. Gibt es eine Möglichkeit, kann ich dies tun?
InformationsquelleAutor der Frage Rachel | 2010-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
in das datagrid, abonnieren Sie den
AutoGeneratingColumn
Ereignis, denargs
(DataGridAutoGeneratingColumnEventArgs
) hat den Namen der Spalte und "Cancel
", wenn die Spalte name ID legen Sie dannCancel = true
. sollte den trick tun.InformationsquelleAutor der Antwort Alex Lo
Können Sie ein Verhalten (wiederverwendbaren code) um die Arbeit zu tun... auf Diese Weise können Sie Attribut, das würde zentralisieren der Spalte Sichtbarkeit in einem Ort.
Verwendung:
...
Code:
InformationsquelleAutor der Antwort Eric Ouellet
Andere Möglichkeit wäre
Visibility.Collapsed
:InformationsquelleAutor der Antwort Boern
Ich kann nicht sprechen für die 4, allerdings war es nicht möglich in 3.5 SP1, zumindest ohne Registrierung für ein Ereignis, das wollte ich unter allen Umständen zu vermeiden.
Was könnten Sie stattdessen tun, ist die Veränderung Ihrer generation-code
AutoGenerateColumns=False
dann legen Sie einfach die Spalten, die Sie interessieren, innerhalb der XAML-wie die zugrunde liegenden Daten werden alle noch innerhalb der Spalten entsprechendDies ermöglicht es Ihnen, anzeigen, die nur Spalten, die Sie interessieren in Bezug auf das zugrunde liegende Modell sowie änderung der
Header
anzeigen wie Sie sehen, passen, so sind Sie nicht gebunden an dieProperty
Namen auf das Modell.InformationsquelleAutor der Antwort Aaron McIver
Ich würde nicht sagen, dass es Super Lösung... aber... Sie haben noch eine weitere Abstraktionsschicht
zum Beispiel lassen Sie uns sagen, Sie haben ein Objekt wie:
Wollen Sie nicht die Spalte für die Id, so dass Sie neues Objekt anlegen
dann anzeigen/konvertieren Foo, Foo2 und Sie sind fertig.
Weitere Möglichkeit (nicht immer möglich) zu ändern zugriffsmodifizierer zu internen
diese Weise werden Sie nicht haben, die Id-Spalte generiert.
InformationsquelleAutor der Antwort Viktor La Croix