在WPF中是否可以在keyup事件上强制更新数据网格?

时间:2017-02-24 00:17:45

标签: c# wpf datatable datagrid

我有一个包含多行和多列的数据网格。其中一列是数值。用户可以编辑此列以更改此单元格/列中的值。此列已合计,数字显示在数据网格下。我想在用户输入数字后立即更新此号码。在KeyUp事件中,我调用一个例程,将datagrid卸载到数据表,然后我读取列并计算此列中的值。但是,当卸载数据网格时,原始值仍然是单元格值。在我卸载datagsrid之前是否需要强制更新?

这是我的代码:

npm install nools --save

2 个答案:

答案 0 :(得分:1)

您可以处理AutoGeneratingColumn并将列Binding的UpdateSourceTrigger设置为PropertyChanged。假设这是你的DataTable:

var tab = new DataTable();
tab.Columns.Add("a", typeof(double));
tab.Rows.Add(tab.NewRow());
tab.Rows[0][0] = 45; 

这是你的DataGrid及其ItemsSource:

DataGrid gr = new DataGrid();
gr.ItemsSource = tab.AsDataView();

手柄:

gr.AutoGeneratingColumn += Gr_AutoGeneratingColumn;

其中

    private void Gr_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        DataGridTextColumn col = e.Column as DataGridTextColumn;
        if (col != null)
        {
            Binding binding = new Binding("[" + col.Header.ToString() + "]");
            binding.Mode = BindingMode.TwoWay;
            binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; 
            col.Binding = binding; 
        }
    }

在此设置中,当您在单元格中键入时,DataGrid的值会更新。

答案 1 :(得分:0)

您可以尝试使用DataGridCell'而不是更新值datagrid keydown / up事件。 keyup / keydown事件