Kann ich DataGrid.Columns zwischen DataGrid-Tabellen freigeben

9

Ich habe 3 Datagrids, die denselben Datentyp haben. Ich möchte die Spaltenbindung einmal konfigurieren und die 3 Datagrids die Ressource freigeben.

z.B.

%Vor%

Gibt es eine Möglichkeit, die ItemsSource für jedes DataGrid festzulegen, und dann eine Datatemplate oder ein ControlTemplate zu verwenden, um die Spalten zu erhalten?

    
Queso 04.11.2010, 12:58
quelle

3 Antworten

5

Ja ... zwei Möglichkeiten. Man kann einfach einen Stil für DataGrid hinzufügen, der die Spalten so einstellt ...

%Vor%

Das funktioniert, stellt aber ein Problem dar, wenn Sie es auf mehrere Raster anwenden, die möglicherweise bereits einen Stil verwenden.

In diesem Fall funktioniert der andere, flexiblere Weg besser. Dies erfordert jedoch das Erstellen einer XAML-freundlichen Klasse, die ein ObservableCollection<DataGridColumn> repräsentiert (obwohl Sie technisch nur Spalten angegeben haben, bin ich gerne selbst fertig, also würde ich auch eins für die Zeilen machen) Fügen Sie sie dann an einer Stelle hinzu, auf die Sie verweisen können die XAML-Namespaces. (Ich nenne mein xmlns:dge für 'DataGridEnhancements') Sie verwenden es dann wie folgt:

Im Code somwhere (ich würde es App-weit zugänglich machen) ...

%Vor%

Dann in den Ressourcen ...

%Vor%

Und schließlich im XAML ...

%Vor%

HTH,

Markieren

BEARBEITEN: Da Sie die DataGrid.Columns -Eigenschaft nicht festlegen können, müssen Sie verbessern Ihre DataGridView (wie in den Kommentaren erwähnt). Hier ist der Code für ein EnhancedDataGrid :

%Vor%

Jetzt können Sie die Spalten mit der SetColumns-Abhängigkeitseigenschaft festlegen, die in Ihrem CustomControl erstellt wurde:

%Vor%     
MarqueIV 20.05.2011, 18:02
quelle
1

Sie können ein benutzerdefiniertes Steuerelement erstellen, um das Datenraster zu umbrechen und Daten an es zu übergeben. Das Steuerelement legt die Daten in einem Raster fest.

    
Vitalik 02.12.2010 12:55
quelle
1

Diese Antwort basiert auf der Lösung von MarquelV. In seiner Antwort (und in den Kommentaren) erwähnt er ein benutzerdefiniertes Steuerelement mit dem Namen EnhancedDataGrid , wobei er Logik für setzen die Eigenschaft DataGrid.Columns bereitstellt. Hier ist der Code für ein EnhancedDataGrid :

%Vor%

Jetzt können Sie die Spalten mit der SetColumns-Abhängigkeitseigenschaft festlegen, die in Ihrem CustomControl erstellt wurde:

%Vor%     
QuantumHive 22.09.2015 10:29
quelle

Tags und Links