2011-06-09 74 views
0

在我正在开发的应用程序中,我使用了一个datagrid来显示数据库中的数据提取。它宣称,像这样在我的XAML文件:在Silverlight Datagrid中添加一行控件

<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中做到这一点,如果可能的话。

+1

MVVM并不意味着没有代码隐藏。如果它是特定于视图的代码,它在代码隐藏方面属于恰到好处。 XAML也是代码。这只是声明性的而非强制性的,通常是首选,因为它更简洁明了。 – 2011-06-10 10:33:40

+0

感谢您的澄清!我有点找到了做我想做的事的方法。我用解决方案编辑了我的帖子。 – Mathieu 2011-06-10 13:20:57

回答

0

好的,所以我找到了解决办法。我为我的单元格声明了一个模板,其中包含一个按钮和一个绑定到数据的文本块。我将布尔上的按钮的可见性属性绑定到只有第一行元素为true的布尔值上。

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

这有点破解。但它的工作。我唯一关心的是性能,因为每个单元都声明了一个按钮。因此,有数千行,我想可能会有性能问题。

1

您也许能够为标题提供模板,但如果不符合要求,则需要重新对DataGrid进行模板设置才能完成此操作。