在我正在开发的应用程序中,我正在使用数据网格来显示数据库中的数据提取。在我的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中执行此操作的方法,如果可能的话。
答案 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>
有点黑客攻击。但它的确有效。我唯一担心的是性能,因为为每个单元格声明了一个按钮。因此,有数千行,我猜可能会有性能损失。