验证后切换复选框值

我试图在DataGridCheckboxColumn的复选框中进行切换,如果它在另一列中的数量超过了一定数量。

到目前为止,它遍历了DataGrid并成功验证了我需要它的另一列,但是我无法切换任何符合条件的Chekbox。

<DataGridTextColumn Header="Total" IsReadOnly="True" Binding="{Binding cost}" Width="130"></DataGridTextColumn>

<DataGridCheckBoxColumn Header="Check" IsReadOnly="False" Width="50">
    <DataGridCheckBoxColumn.ElementStyle>
        <Style />
    </DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>
for(int i=0; i<dataGrid.Items.Count - 1; i++)
{
    if(Convert.ToDecimal(dataGrid.Columns[3].getcellContent(i)) > 200)
        {            //Columns[3] is the "Total" Column.
             ((dataGrid.Columns[6]).getcellContent(i) as CheckBox).IsChecked = true;
             //Columns[6] is the DataGridCheckBoxColumn
        }
}

我使用以下方法获得总计列的正确值:

dataGrid.Columns[3].getcellContent(i)

但是

((dataGrid.Columns[6]).getcellContent(i) as CheckBox);

哪个是DataGridCheckBoxColumn,即使它是正确的列,也返回nullException。如果我WriteLine dataGrid.Columns [6],则得到“ System.Windows.Controls.DataGridCheckBoxColumn”,因此我确定位置正确,但无法将其设置为true。

xk0218 回答:验证后切换复选框值

尝试将Binding="{Binding IsChecked,UpdateSourceTrigger=PropertyChanged}"属性添加到您的DataGridCheckBoxColumn中,如下所示:

<DataGridCheckBoxColumn Header="Check" IsReadOnly="False" Width="50" Binding="{Binding IsChecked,UpdateSourceTrigger=PropertyChanged}" >
    ...

还可以检查以下堆栈溢出问题: How to perform Single click checkbox selection in WPF DataGrid with IEditableObject object

本文链接:https://www.f2er.com/3148525.html

大家都在问