问题描述
|
在我正在开发的应用程序中,我正在使用数据网格来显示从数据库中获取的数据。在我的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中执行此操作的方法(如果可能)。
解决方法
您可能可以不用为标题提供模板,但是如果这样做,您将需要重新模板
DataGrid
。
, 好的,所以我找到了解决方法。我为单元格声明了一个模板,其中包含一个按钮和一个绑定到数据的文本块。我将按钮的可见性属性绑定到一个布尔值上,该布尔值仅对第一行的元素为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>
这有点hack-ish。但这有效。我唯一关心的是性能,因为为每个单元声明了一个按钮。因此,对于成千上万的行,我想可能会影响性能。