2010-04-19 41 views
6

所以我想制作一个可见的表格,每个单元格周围都有一个边框,并且标题的背景颜色也不同。我想最终将控制插入到此。例如,在一个表格元素或一些单选按钮等内部放置一个文本框。是否有对此的控制?如何在Silverlight中创建表格?

我已经将范围缩小到两个可能性,但他们都似乎有种“咩”:

  1. 使用网格控制 - 我喜欢这一点,但有没有办法上色的边界细胞(我没有找到这个)

  2. 使用DataGrid控制 - 这个控制只是太复杂,我所需要的。

我只是在Silverlight中寻找html样式表,有什么想法吗?

回答

9

我已经得到了相当不错的结果与HeaderedItemsControl在该工具包:

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

当然,你可以在风格上面,以你的心的内容...

+0

是否有一种方法可以使标题模板和项目模板共享同一个网格? – 2010-07-22 21:42:53

2

可以在每个细胞在这个样本(带UniformGrid)使用网格边界元(带了borderThickness和BorderBrush \背景) 看:

<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

谢谢你..虽然让我们拭目以待如果有比在每个元素上设置边框更有效的方法。 3年后,我希望微软能够提供更好的表格。 – foreyez 2010-04-19 22:39:43