2010-05-17 8 views

Répondre

0

Vous pouvez utiliser la propriété AlternatingRowBackground pour faire une ligne sur deux. Avez-vous besoin de faire des lignes spécifiques? Comme seulement les lignes 1, 5 et 9? Ou une couleur d'arrière-plan différente selon les données?

ÉDITÉE: par commentaire .. modifié

Le faire des données basées peut être fait comme ça ...

<DataGrid 
    AlternatingRowBackground="AliceBlue" 
    ItemsSource="{Binding}" 
    AutoGenerateColumns="False" 
    Height="200" 
    HorizontalAlignment="Left" 
    Margin="156,58,0,0" 
    Name="dataGrid1" 
    VerticalAlignment="Top" 
    Width="200" LoadingRow="dataGrid1_LoadingRow"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding}" /> 
    </DataGrid.Columns> 
</DataGrid> 

void MainWindow_Loaded(object sender, RoutedEventArgs e) 
{ 
    ObservableCollection<string> list = new ObservableCollection<string>(); 
    list.Add("test1"); 
    list.Add("test2"); 
    list.Add("test3"); 
    list.Add("test4"); 
    list.Add("test5"); 

    dataGrid1.ItemsSource = list; 
} 

private void dataGrid1_LoadingRow(object sender, DataGridRowEventArgs e) 
{ 
    if (e.Row.Item.ToString().Contains("test")) 
    { 
     e.Row.Background = Brushes.Red; 
    } 
} 
+0

oui, couleur de fond différente en fonction des données, est-il possible? comment faire ça? – martin

+0

Dans mon cas, il y a plusieurs colonnes, donc devrais-je utiliser: e.Row.Item.ToString(). Contient == "xxxx"? mais ça ne marche pas .. – martin

+0

'Contains' est une méthode. donc votre code serait ... 'if (e.Row.Item.ToString(). Contient (" xxx ")) .... –