2010-05-17 145 views

回答

0

您可以使用AlternatingRowBackground屬性來執行每隔一行。你需要做特定的行嗎?只有第1,5和9行?或根據數據不同的背景顏色?

編輯:根據註釋編輯 ..

否則它基於可這樣做數據...

<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

是,不同的背景顏色取決於數據,這可能嗎?怎麼做? – martin 2010-05-17 15:52:16

+0

在我的情況下,有幾列,所以我應該使用:e.Row.Item.ToString()。包含==「xxxx」?但它不起作用。 – martin 2010-05-17 16:14:46

+0

'Contains'是一種方法。所以你的代碼將是...'if(e.Row.Item.ToString()。Contains(「xxx」)).... – 2010-05-17 18:44:56