在Silverlight Datagrid中添加一行控件

时间:2011-06-09 23:51:18

标签: c# silverlight silverlight-4.0 silverlight-3.0

在我正在开发的应用程序中,我正在使用数据网格来显示数据库中的数据提取。在我的XAML文件中声明它是这样的:

<sdk:DataGrid x:Name="dg" AutoGenerateColumns="False" ItemSource={Binding etc.} >
    <sdk:DataGrid.Columns>
        <sdk:DataGridTextBoxColumn Header="Col1"
             Binding="{Binding Col1Data}" />
        <sdk:DataGridTextBoxColumn Header="Col2" 
             Binding="{Binding Col2Data}" />
        <sdk:DataGridTextBoxColumn Header="Col3"
             Binding="{Binding Col3Data}" />
        <sdk:DataGridCheckBoxColumn Header="Col4" 
             Binding="{Binding Col4Data}" />
   <sdk:DataGrid.Columns>
<sdk:DataGrid>

我想要做的是在标题和数据的第一行之间添加一行,包含5个组合框(每列1个)。使用DataGridTemplateColumn对列进行操作非常简单,但是如何为行执行此操作?

提前感谢您的建议!

虚假编辑:哦顺便说一下,我不是后面代码的粉丝(尝试使用完整的MVVM),所以我正在寻找一种在XAML中执行此操作的方法,如果可能的话。

2 个答案:

答案 0 :(得分:1)

您可以为标题提供模板,但如果不这样做,则需要重新模板DataGrid才能执行此操作。

答案 1 :(得分:0)

好的,所以我找到了一个解决方法。我为我的单元格声明了一个模板,其中包含一个按钮和一个绑定到数据的文本块。我在一个布尔值上绑定按钮的visibility属性,该布尔值仅对第一行的元素为真。

<sdk:DataGridTemplateColumn Header="Col1" Width="60">
    <sdk:DataGridTemplateColumn.CellTemplate>
       <DataTemplate>
          <StackPanel Orientation="Vertical" Height="30">
             <Button Content="Boutton" Visibility="{Binding Path=IsFirstElement, Converter={StaticResource visibilityConverter}}" />
             <TextBlock Text="{Binding Path=Col1Data}" />
           </StackPanel>
        </DataTemplate>
     </sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>

有点黑客攻击。但它的确有效。我唯一担心的是性能,因为为每个单元格声明了一个按钮。因此,有数千行,我猜可能会有性能损失。