C# · 12月 23, 2021

c# – 在WPF中更改网格行背景颜色

我想为我的网格行设置2种颜色,偶数颜色将有一种颜色,其他颜色将有另一种颜色.
我甚至不知道开始做这件事.

<Grid x:Name=”Stations_Template”> <Grid.RowDeFinitions> <RowDeFinition Height=”Auto” /> </Grid.RowDeFinitions> <Grid.ColumnDeFinitions> <ColumnDeFinition Width=”*” /> <ColumnDeFinition Width=”*” /> <ColumnDeFinition Width=”*” /> <ColumnDeFinition Width=”*” /> <ColumnDeFinition Width=”*” /> </Grid.ColumnDeFinitions> <TextBlock Grid.Column=”0″ Text=”First Name: ” /> <TextBlock Grid.Column=”1″ Text=”{Binding Path=sname}” /> <TextBlock Grid.Column=”2″ Text=”Last Name: ” /> <TextBlock Grid.Column=”3″ Text=”{Binding Path=mahoz}” /> <Check@R_212_2419@ Grid.Column=”4″ Content=”Is Active?” IsEnabled=”False” IsChecked=”{Binding Path=isactive}” /> </Grid> </DataTemplate> </List@R_212_2419@.ItemTemplate> </List@R_212_2419@>解决方法 使用矩形首先填充行,然后向其中添加数据. <Grid Background=”White”> <Grid.RowDeFinitions> <RowDeFinition Height=”Auto”/> <RowDeFinition Height=”Auto”/> <RowDeFinition Height=”Auto”/> <RowDeFinition Height=”Auto”/> </Grid.RowDeFinitions> <Rectangle Grid.Row=”0″ Fill=”AliceBlue” /> <TextBlock Grid.Row=”0″ Text=”Row 1″ HorizontalAlignment=”Center”/> <Rectangle Grid.Row=”1″ Fill=”AntiqueWhite” /> <TextBlock Grid.Row=”1″ Text=”Row 2″ HorizontalAlignment=”Center”/> <Rectangle Grid.Row=”2″ Fill=”AliceBlue” /> <TextBlock Grid.Row=”2″ Text=”Row 3″ HorizontalAlignment=”Center”/> <Rectangle Grid.Row=”3″ Fill=”AntiqueWhite” /> <TextBlock Grid.Row=”3″ Text=”Row 4″ HorizontalAlignment=”Center”/> </Grid>

编辑:
如果您正在加载未知数量的项目,那么我认为您需要像itemscontrol这样的东西加载它们.然后您可以使用alternationcount和触发器来处理交替颜色.

<ItemsControl ItemsSource=”{Binding DataList}” AlternationCount=”2″> <ItemsControl.ItemTemplate> <DataTemplate> <Grid x:Name=”FooBar” Margin=”0,10″> </Grid> <DataTemplate.Triggers> <Trigger Property=”ItemsControl.AlternationIndex” Value=”0″> <Setter Property=”Background” Value=”Blue” TargetName=”FooBar”/> </Trigger> <Trigger Property=”ItemsControl.AlternationIndex” Value=”1″> <Setter Property=”Background” Value=”Red” TargetName=”FooBar”/> </Trigger> </DataTemplate.Triggers> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl>