我有一个wpf数据网格,它绑定到一个数据集合,其中的列和绑定在xaml中声明。
我想要做的是让第一行允许用户对列的其余部分进行批量更改。
因此,例如,在用户可以在顶部组合框中选择一个值,单击该按钮,它将调用一个事件处理程序,该处理程序将更改基础数据,并有机会反映在列中的所有组合框中。
如果无法添加自定义行,我想我可能会在列标题和行之间创建一个空格,并在创建的空间中放置“第一行”。
如果可能,或者您需要更多信息,请告知我们。
答案 0 :(得分:1)
您可以覆盖网格内容模板,并为您的自定义行创建一个包含一个网格的堆栈面板,为所有其他行创建另一个网格,然后可以使用他们的Outlook来使它们看起来像您想要的那样..
这是上述解决方案的一个非常基本的代码----
<Grid>
<ScrollViewer>
<StackPanel Orientation="Vertical">
<DataGrid ItemsSource="{Binding list1}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="ComboCol" Width="50">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Text="Bind Your Combo Box" IsEditable="True"></ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<DataGrid ItemsSource="{Binding list2}" HeadersVisibility="Row">
<DataGrid.Columns>
<DataGridTextColumn Header="Line1" Binding="{Binding Path=.}" Width="50"/>
<DataGridTextColumn Header="Line2" Binding="{Binding Path=.}" Width="50"/>
</DataGrid.Columns>
</DataGrid>
<DataGrid/>
</StackPanel>
</ScrollViewer>
</Grid>