0

私は wpf 形式の DataGrid を持っています。チェックボックスのある行があります。ヘッダーのチェックボックスが選択されている/選択されていないすべての行を選択/選択解除したい。

しかし、chk.IsChecked = falseで「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。

ここに画像の説明を入力

c# コード:

private void myDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
    {
        CheckBox chk = (CheckBox)this.myDataGrid.Columns[0].GetCellContent(e.Row);
        chk.IsChecked = false;
        checkboxes.Add(chk);
    }

xaml コードは次のとおりです。

<Window x:Class="WpfApplication1.Grid"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Grid" Height="300" Width="300">
<Grid>
    <DataGrid x:Name="myDataGrid"
              VerticalAlignment="Top"
              Grid.Column="0"
              AutoGenerateColumns="False"
              LoadingRow="myDataGrid_LoadingRow"
              Loaded="myDataGrid_Loaded">
        <DataGrid.Columns>
            <DataGridTemplateColumn Width="80">
                <DataGridTemplateColumn.Header>
                    <CheckBox HorizontalAlignment="Center"
                              Click="chk_Click"
                              VerticalAlignment="Center"
                              Name="chckAll">
                    </CheckBox>
                </DataGridTemplateColumn.Header>

                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox x:Name="chk"
                                  HorizontalAlignment="Center"
                                  HorizontalContentAlignment="Center"></CheckBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

            <DataGridTextColumn Header="First Name"
                                Width="100"
                                Binding="{Binding FirstName}"></DataGridTextColumn>
            <DataGridTextColumn Header="Last Name"
                                Width="100"
                                Binding="{Binding LastName}"></DataGridTextColumn>
        </DataGrid.Columns> 
    </DataGrid>
</Grid>

前もって感謝します。

4

1 に答える 1

1

このリンクで彼らが言うことを行うことができます。

あなたは次のようになるはずです:

DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(dataGrid.SelectedIndex);
CheckBox chk = (CheckBox)this.myDataGrid.Columns[0].GetCellContent(e.Row);

たぶん、今は試していません。

于 2013-01-18T13:30:23.653 に答える