2017-07-16 3 views
0

Je suis en train de récupérer une liste de colonnes dans une grille de données qui ont une couleur/brosse d'arrière-plan particulier, en utilisant les éléments suivants:Récupérer Liste des DataGrid WPF Colonnes En arrière-plan de la propriété Setter

Dim OutputCols As New List(Of DataGridColumn) 
OutputCols = datagrid_Output.Columns.Where(Function(a) Not (a.CellStyle Is Nothing) AndAlso a.GetValue(BackgroundProperty) Is GridOutputsColor).ToList 

Toutefois, cette doesn ne fonctionne pas et j'ai découvert que GetValue (BackgroundProperty) retourne une valeur vide. Si je fais cela, cependant, je reçois l'objet SetterBase, au lieu du poseur (s) que je veux:

Dim OutputCols As New List(Of DataGridColumn) 
OutputCols = datagrid_Output.Columns.Where(Function(a) Not (a.CellStyle Is Nothing) AndAlso a.CellStyle.Setters.First(Function(b) b.property Is BackgroundProperty).value Is GridOutputsColor).ToList 

... et il ne fonctionne pas parce que la fonction (b) renvoie l'objet SetterBase au lieu de chaque Setter.

Répondre

0

trouvé la solution méchante:

Dim OutputCols As New List(Of DataGridColumn) 
OutputCols = datagrid_Output.Columns.Where(Function(a) Not (a.CellStyle Is Nothing) AndAlso TryCast(a.CellStyle.Setters.Where(Function(b) TryCast(b, Setter).Property Is BackgroundProperty).ToList.First, Setter).Value Is GridOutputsColor).ToList