2010-04-19 19 views
6

Quindi mi piacerebbe creare una tabella visibile, con un bordo attorno a ogni cella e un colore di sfondo diverso per l'intestazione. Mi piacerebbe eventualmente inserire controlli in questo. Ad esempio, inserisci un campo di testo all'interno di uno degli elementi della tabella, o alcuni pulsanti di opzione, ecc. Esiste un controllo per questo?Come creare un tavolo in Silverlight?

ho ristretto la scelta a due possibilità, ma entrambi sembrano sorta di "meh":

  1. utilizzare il controllo griglia - mi piace questo, ma c'è un modo per colorare il confine sul cella (non ho trovato questo)

  2. utilizzare il controllo DataGrid - questo controllo è troppo complicato per quello che mi serve.

Sto solo cercando un tavolo in stile html in silverlight, qualche idea?

risposta

9

ho ottenuto risultati abbastanza decente con la HeaderedItemsControl in Toolkit:

<c:HeaderedItemsControl ItemsSource="{Binding rowData}" x:Name="theTable"> 
    <c:HeaderedItemsControl.Header> 
     <Border Background="HEADER BG COLOR HERE"> 
      <Grid Width="{Binding ActualWidth, ElementName=theTable}"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition Width="*"/>     
       </Grid.ColumnDefinitions> 
       <TextBlock Grid.Column="0" Text="Field 1"/> 
       <TextBlock Grid.Column="1" Text="Field 2"/> 
       <TextBlock Grid.Column="2" Text="Field 3"/> 
      </Grid> 
     </Border> 
    </c:HeaderedItemsControl.Header> 
    <c:HeaderedItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition Width="*"/>     
       </Grid.ColumnDefinitions> 
       <TextBlock Grid.Column="0" Text="{Binding Value1}"/> 
       <TextBlock Grid.Column="1" Text="{Binding Value2}"/> 
       <TextBlock Grid.Column="2" Text="{Binding Value3}"/> 
      </Grid> 
     </DataTemplate> 
    </c:HeaderedItemsControl.ItemTemplate> 
</c:HeaderedItemsControl> 

e naturalmente è possibile lo stile di cui sopra ai vostri cuori contenuto ...

+0

Esiste un modo per il modello di intestazione e il modello di elemento per condividere la stessa griglia? –

2

È possibile utilizzare griglia con elemento di confine in ogni cella (con BorderThickness e BorderBrush \ Background) Guardate questo campione (con UniformGrid):

<UniformGrid Margin="10" Name="uniformGrid1"> 
    <Border BorderThickness="1" BorderBrush="Red"> 
     <TextBlock Text="1"></TextBlock> 
    </Border> 
    <Border BorderThickness="1" BorderBrush="Blue"> 
     <TextBlock Text="2"></TextBlock> 
    </Border> 
    <Border BorderThickness="1" BorderBrush="Black"> 
     <TextBlock Text="3"></TextBlock> 
    </Border> 
    <Border BorderThickness="1" BorderBrush="Yellow"> 
     <TextBlock Text="4"></TextBlock> 
    </Border> 
</UniformGrid> 
+0

grazie .. anche se aspettiamo e vediamo se c'è un modo ancora più efficace di impostare il bordo su ciascun elemento. dopo 3 anni, spero che Microsoft sia uscito con qualcosa di meglio per i tavoli. – foreyez