/ / Modifier l’arrière-plan d’un DataGridCell à partir du code ci-dessous dans Silverlight 4 - silverlight, datagrid, datagridcell

Modifier le fond d'un DataGridCell du codebehind dans Silverlight 4 - silverlight, datagrid, datagridcell

J'écris une application Silverlight qui vous permetanalyser le texte copié via les délimiteurs entrés. Une fois les données analysées et déposées dans la grille, l’utilisateur a la possibilité de «nettoyer» les données. Ceci compare la valeur actuelle d'une cellule aux valeurs autorisées pour la colonne, choisit sa meilleure estimation et lie les données à la grille via la propriété ItemsSource.

Mon problème est que je connais les coordonnées de chaquecellule qui a été "nettoyée", et je voudrais mettre en surbrillance cette cellule ou changer sa couleur de fond. Pour autant que je sache, vous pouvez définir un arrière-plan de DataGridCell individuellement, mais je n’ai aucun moyen d’accéder à DataGridCell. J'ai accès aux colonnes et aux lignes de la grille, mais elles ne semblent pas non plus donner DataGridCell comme je l'avais espéré. Est-ce que quelqu'un a un moyen d'accéder à un DataGridCell après que le ItemsSource ait été défini?

Réponses:

5 pour la réponse № 1

Si vous parcourez la collection, votreItemsSource est lié à, vous pouvez ensuite prendre chaque ligne et parcourir les colonnes pour obtenir le contenu et la cellule - quelque chose comme ceci (astuce est le content.Parent as DataGridCell):

var collection = grid.ItemsSource;
foreach (var dataItem in collection)
{
foreach (var col in grid.Columns)
{
var content = col.GetCellContent(dataItem);
if (content != null)
{
DataGridCell cell = content.Parent as DataGridCell;
// do whatever you need to do with the cell like setting cell.Background
}
}
}

0 pour la réponse № 2

Ce code est utile pour changer la couleur de la cellule.

void datagrid_LoadingRow()
{

var collection = datagrid.ItemsSource;
foreach (var dataItem in collection)
{
foreach (var col in datagrid.Columns)
{
var content1 = col.GetCellContent(dataItem);
if (content1 != null)
{
TextBlock block = content1 as TextBlock;
if (block != null)
{
DataGridCell cell = content1.Parent as DataGridCell;

string cellText = block.Text;
if (cellText == "True")
{
cell.Background = new SolidColorBrush(Colors.Green);
}
if (cellText == "False")
{
cell.Background = new SolidColorBrush(Colors.Red);
}
}


}

}
}
}