Ich habe das Gefühl, ich vermisse hier etwas offensichtlich, aber ich finde keine Möglichkeit, eine DataGrids DataGridRow-Sammlung zu durchlaufen. Ich habe ein Gitter, das eine Itemsource einer Sammlung meiner Klasse hat. Ich versuche, durch die Reihen zu iterieren und alle Reihen hervorzuheben, die eine bestimmte Bedingung erfüllen, aber kann für das Leben von mir nicht sehen, wie.Schleife durch Zeilen in Silverlight DataGrid
Antwort
Sie wollen nicht durch das Gitter zu durchlaufen. Das ist Old-Skool WinForms Denken. Die Grids in WPF und Silverlight wurden unter Berücksichtigung von MVVM überarbeitet. mit Trennung der Sorgen. Anstatt das Raster zu manipulieren, arbeiten Sie direkt mit Ihren Objekten, die an das Raster gebunden sind. So wird das Raster zum Präsentationsaspekt. Seine Aufgabe ist es, die Objekte zu lesen und Informationen basierend auf den Daten in diesen Objekten anzuzeigen.
Sie möchten stattdessen Eigenschaften an das Objekt anfügen, an das Sie eine Bindung herstellen, und basierend auf diesen Einstellungen die Gitterstile für Farbe/Schriftart/etc. Um dies zu tun, müssen Sie einen IValueConverter erstellen. Hier
ist ein Beispiel eines Wandlers ich in einem WPF und Silverlight Datagrid habe:
public class StateToBackgroundColorConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null) return Colors.White.ToString();
var state = (State) value;
return state.WebColor;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
In meinem XAML ich es wie folgt erklären:
<UserControl.Resources>
<Converters:StateToBackgroundColorConverter x:Key="stateToBackgroundColorConverter"/>
</UserControl.Resources>
In der Datagrid-Deklaration in XAML I Spezifizieren Sie die Konverter-Nutzung für die DataGridRow:
Also, der Konverter macht die Arbeit. Es liest den Wert des State-Objekts (das ein untergeordnetes Objekt auf meinem AgentState-Objekt ist, an das das Grid gebunden ist; es ist an eine Auflistung von AgentState-Objekten gebunden). Der Konverter liest den Wert des Status und gibt eine Zeichenfolgendarstellung einer Farbe für das Raster zurück, das für die Festlegung der Zeile verwendet werden soll.
Hoffe, dass hilft.
Haben Sie die CollectionViewSource-Klasse ausprobiert?
und wie es zu filtern, siehe unten Beitrag
- 1. Sortieren von Zeilen auf Silverlight DataGrid
- 2. SilverLight Datagrid
- 3. Aktualisieren DataGrid in Silverlight
- 4. Erweitertes DataGrid in Silverlight
- 5. Silverlight DataGrid-Zeilenfarbbindung
- 6. Benachrichtigen, wenn alle Zeilen in einem Silverlight DataGrid geladen werden
- 7. Silverlight DataGrid Redraw Problem
- 8. C# Silverlight Datagrid - Zeilenfarben ändern
- 9. Silverlight Datagrid bei Rechtsklick auswählen
- 10. Iterieren ein Silverlight Datagrid
- 11. Silverlight 2-Datagrid-Header
- 12. Silverlight 3 BETA DataGrid-Gruppierung
- 13. Iteration durch Datagrid Zeilen für den Export zu Excel (wieder)
- 14. R Schleife durch 20 Millionen Zeilen
- 15. Hilfe Bindung meine Silverlight Datagrid
- 16. Silverlight DataGrid Header horizontale Ausrichtung
- 17. Silverlight 4 - Datagrid-Sortierung und SelectionChanged-Problem
- 18. Zeile in einem Silverlight DataGrid automatisch bearbeiten
- 19. Hintergrundfarbe des Datagrid-Headers in Silverlight ändern
- 20. eine dynamische Datenstruktur in Silverlight Datagrid
- 21. Auswählen mehrerer Zellen in Silverlight 4 Datagrid
- 22. Silverlight: Datagrid-ähnliche Gruppierung in ItemsControl
- 23. WPF DataGrid: Zeilen neu anordnen?
- 24. DataGrid Zeilen-/Spaltenfilterung
- 25. Zeilen aus Datagrid entfernen
- 26. Warum funktionieren meine Bildlaufleisten nicht ordnungsgemäß, wenn Zeilen in silverlight Datagrid programmgesteuert ausgeblendet werden?
- 27. Entfernen von Zeilen aus einem WPF-Datagrid
- 28. Silverlight Toolkit Datagrid entfernen Zelle vertikale Trennlinie
- 29. Silverlight DataGrid: Exportieren nach Excel oder CSV
- 30. WPF-DataGrid-Zeilen-Doppelklickereignis programmgesteuert