0

私はWPFWindowsアプリケーションに取り組んでおり、その中のいくつかの問題を解決するための助けが必要です。

データグリッドビューがあります。これがXMLです:

<DataGrid x:Name="MyDataGrid" Margin="0,55.333,8,209.692" Width="273.27">
 <DataGrid.Columns>
                <DataGridTextColumn Header="ID" IsReadOnly="True" Binding="{Binding ID}" Visibility="Hidden" />
                <DataGridTextColumn Header="CopID" IsReadOnly="True" Binding="{Binding CopID}" Visibility="Hidden"/>
                <DataGridTextColumn Header="CgID" IsReadOnly="True" Binding="{Binding CgID}" Visibility="Hidden"/>
                <DataGridTextColumn Header="Item Names" Width="190" IsReadOnly="True" Binding="{Binding ItemName}"/>
                <DataGridCheckBoxColumn  Header="Select" CanUserReorder="False" />
            </DataGrid.Columns>
</DataGrid>

ループ内でtrueまたはfalseを確認したいDataGridCheckBoxColumn CheckBoxユーザーがボタンをクリックしたときに列の値を読み取ることを望んでいます。コードは次のとおりです。

for (int i = 0; i < MyDataGrid.Items.Count - 1; i++)
{
    /*Some code here for Check CheckBox True or False*/
    for (int j = 0; j < MyDataGrid.Columns.Count; j++)
    {      
      string Massage = (MyDataGrid.Items[j] as DataRowView).Row.ItemArray[3].ToString();
      MessageBox.Show( Massage);
     }
 }

ループ内でtrueまたはfalseをチェックして、その行の値を取得したい。がチェックCheckBoxされている列はCheckBox、私が諦めたコードと競合するのを誰かが助けてくれることを願っています。ユーザーがボタンをクリックしたときにこのコードを機能させたいのは、このループを使用してレコードをデータベースに保存する必要があるためです。ここで、CheckBoxはtrueですMyDataGrid

CheckBoxまた、[すべて選択]の呼び出しをオンにするときに、datagridの[すべて]チェックボックスをオンにします。誰かが私をできるだけ早く助けてくれることを願っていますありがとう

4

1 に答える 1

1

まず、通常はそうすべきではないということから始めます。そのため、予想よりも難しいのです。通常、DataGrid自体のセルではなく、基になるデータソースにアクセスする必要があります。

そうは言っても、それ可能です。例えば:

private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
        const int CHECKBOX_COLUMN = 4;
        for (int i = 0; i < MyDataGrid.Items.Count - 1; i++)
        {

            DataGridCell cell = GetCell(i, CHECKBOX_COLUMN);
            CheckBox tb = cell.Content as CheckBox;
            MessageBox.Show(tb.IsChecked.ToString());
        }
}

関数GetCell()(およびGetCellが使用する内部関数)はここにあります

于 2013-03-24T12:23:39.193 に答える