我有界的 DataGrid,其中我有 CheckBoxColumn 作为它的第一个 col 和标题中的 Checkbox。如果选中,则检索该行的数据。代码是:
<DataGrid AutoGenerateColumns="False" Name="dgvSiSelection" BorderBrush="#FFB7B39D" Background="LightYellow" RowBackground="LightGray" AlternatingRowBackground="#FFFFFFF5" BorderThickness="10" FontSize="13" FontFamily="Segoe UI" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding BoolProperty, Mode=TwoWay}"/>
<DataGridTextColumn Header="" Binding="{Binding SiHeader}" MinWidth="108" IsReadOnly="True"/>
<DataGridTextColumn Header="Number of Chemicals" Binding="{Binding S_NumberOfCases}" />
<DataGridTextColumn Binding="{Binding S_Value1}" >
<DataGridTextColumn.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" Text="Value1"/>
<CheckBox Name="chkNValue1" Grid.Column="0" Width="16" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridColumn}}, Path=DataContext.AllItemsAreChecked}" />
</Grid>
..................
在上面的网格中,我在第一列和标题上都有复选框以及标题。基于对各个复选框的选择,检索数据。
当我设置 DaraGrid 的 ItemSource 时,项目会正确显示,但未选中 1st col & 的复选框以及列标题。我找不到设置第一行复选框的方法。
另外如何选择 chkNValue1 ?
我如何设置它或如何完成此操作。
代码我导入数据并相应地加载数据网格:
List<SIData> sd = mw.xlsImpExp.GetStep5SiList();
dgvSiSelection.ItemsSource = sd;
// SI Grid - Check the ValueX checkbox on header
for (int i = 0; i < sd.Count; i++)
{
SIData s = sd[i];
if (s.S_Value1 > 0)
chkNValue1.IsChecked = true;
if (s.S_Value2 > 0)
chkNValue2.IsChecked = true;
if (s.S_Value3 > 0)
chkNValue3.IsChecked = true;
if (s.S_Value4 > 0)
chkNValue4.IsChecked = true;
if (s.S_Value5 > 0)
chkNValue5.IsChecked = true;
}
为了检查 ValuesX 列的复选框,我管理了上面的代码。但是想知道它们是否可以比循环更简单和容易。
对于 col1 复选框,我根本没有代码。我不知道如何实现它。我主要需要在设置网格的 ItemSource 时进行设置。
任何指导方针,帮助表示赞赏。
谢谢