2014-12-26 13 views
7

Desidero impostare 2 colori sulle righe della griglia, quelli pari avranno un colore e gli altri ne avranno un altro. Non so nemmeno cominciare a farlo. Modifica colore sfondo riga griglia in WPF

    <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}" /> 
         <CheckBox Grid.Column="4" 
       Content="Is Active?" 
       IsEnabled="False" 
       IsChecked="{Binding Path=isactive}" /> 
        </Grid> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
+1

Penso che si sta meglio con un 'DataGrid'. Un 'Grid' è un controllo del layout. – Sjips

+1

Ditto w/@Sjips http://stackoverflow.com/questions/13914382/wpf-datagrid-alternatingrowbackground-and-rowstyle-precedence – kenny

risposta

13

Usa rettangoli per riempire le righe, poi aggiungere i dati a loro.

<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> 

Edit: Se si sta caricando una quantità sconosciuta di oggetti, allora penso che avete bisogno di qualcosa come un ItemsControl per caricarli nel È quindi possibile utilizzare l'AlternationCount e trigger per gestire il colore alternato..

<ItemsControl ItemsSource="{Binding DataList}" AlternationCount="2"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Grid x:Name="FooBar" Margin="0,0,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> 
+0

Ciao, grazie, ma il numero di righe è sconosciuto, dinamico, l'ho capito da il database –

+0

Risposta aggiornata per una quantità sconosciuta di righe –

+0

Grazie mille !! WPF è molto meglio di WF, ha davvero bisogno di scavare –

4

enter image description here

<Window x:Class="WpfApplication3.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition/> 
      <RowDefinition/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition/> 
     </Grid.ColumnDefinitions> 
     <Border Background="Cyan" /> 
     <Border Grid.Row="2" Grid.Column="1" Background="Red" /> 
     <Border Grid.Row="1" Background="Black" /> 
     <Border Grid.Row="1" Background="Black" /> 
     <Border Grid.Row="2" Background="Orange" /> 
     <Border Grid.Row="0" Grid.Column="1" Background="Green" /> 
     <TextBlock Grid.ColumnSpan="2" Grid.Row="1" Text="Here is some more text" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
     <TextBlock Grid.ColumnSpan="2" Text="Here is some text" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
     <TextBlock Grid.ColumnSpan="2" Grid.Row="2" Text="Here is even more text" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
    </Grid> 
</Window> 
![enter image description here][1] 


    [1]: http://i.stack.imgur.com/LX9X8.png 
Problemi correlati