Столбец DataGrid привязан к столбцу DataTable с десятичным типом данных, который заполняется из базы данных.
<DataGridTextColumn Binding="{Binding Pay, UpdateSourceTrigger=PropertyChanged,Mode=TwoWay, Header="Sum"/>
После изменения каждой ячейки мне нужно вычислить сумму в столбце.
private void dgPays_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) {
if (dtPay == null || dtPay.Rows.Count == 0) {
return;
}
decimal Pay;
DataRow[] rr = dtPay.Select("IsTotal=1");
foreach (DataRow r in rr) {
dtPay.Rows.Remove(r);
}
Decimal.TryParse(dtPay.Compute("SUM(Pay)", "").ToString(), out Pay);
dtPay.Rows.Add(null, null, null, null, null, null, Pay, null, true);
}
Но, когда пользователь вводит отрицательное дробное число с начальным нулем «-0.xxxx» из-за этой привязки, минус теряется во время ввода, а «-0» преобразуется в «0». Такие числа можно вводить только как «-.xxxx», которые автоматически преобразуются в «-0.xxxx», но это неудобно для пользователя.
DataTable заполняется из базы данных, а затем значения сохраняются из нее в базе данных, и я не могу изменить привязку «Mode = TwoWay».
Если я изменяю «UpdateSourceTrigger = PropertyChanged» не работает «dtPay.Compute (« SUM (Pay) »,« »)» после окончания редактирования ячейки.
Как ввести "-0"?