【发布时间】:2021-07-15 16:15:27
【问题描述】:
我有一个 (.NET Framework 4.6.1) wpf 窗口,其中一个数据网格绑定到我的主窗口上的一个集合。此集合包含十进制类型的属性。
当我清除单元格时,它会出现红色边框。
这里是窗口构造器
public WdwSapAccounting()
{
DataContext = System.Windows.Application.Current.MainWindow.DataContext;
var x = MainWindow.Reference.CurrentAction.ACCOUNTING_COLLECTION;
InitialiseComponent();
}
现在我关闭窗口(单元格为空)。我重新打开窗口并调试我的variable x。它说总和仍然是 200。在下一个命令 InitialiseComponent(); 它崩溃并出现错误:
在 AddNew 或 EditItem 事务期间不允许延迟刷新
我尝试了 FallBackValue 和 TargetNullValue,但两者都没有捕捉到空单元格,也没有捕捉到这个奇怪的异常。我尝试了 CommitEdit() 和 CancelEdit() 但这也无济于事:
private void MetroWindow_Loaded(object sender, RoutedEventArgs e)
{
dataGridAccounting.CommitEdit();
dataGridAccounting.CancelEdit();
}
private void MetroWindow_Unloaded(object sender, RoutedEventArgs e)
{
dataGridAccounting.CommitEdit();
dataGridAccounting.CancelEdit();
}
private void dataGridAccounting_Loaded(object sender, RoutedEventArgs e)
{
dataGridAccounting.CommitEdit();
dataGridAccounting.CancelEdit();
}
private void dataGridAccounting_UnloadingRow(object sender, DataGridRowEventArgs e)
{
dataGridAccounting.CommitEdit();
dataGridAccounting.CancelEdit();
}
这是我的数据网格的 xml。
<DataGrid MinHeight="150" Loaded="dataGridAccounting_Loaded" UnloadingRow="dataGridAccounting_UnloadingRow" UnloadingRowDetails="dataGridAccounting_UnloadingRowDetails"
LoadingRow="DataGridAccounting_LoadingRow" RowStyle="{StaticResource DataGridRowStyle}"
x:Name="dataGridAccounting" CellEditEnding="dataGridAccounting_CellEditEnding"
CurrentCellChanged="DataGridAccounting_CurrentCellChanged" Unloaded="dataGridAccounting_Unloaded"
ItemsSource="{Binding CurrentAction.ACCOUNTING_COLLECTION, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="False" >
</DataGrid.ContextMenu>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding BETRAG, UpdateSourceTrigger=PropertyChanged, StringFormat=N, FallbackValue=0.0, TargetNullValue=0.0}" Header="BETRAG"/>
</DataGrid.Columns>
</DataGrid>
【问题讨论】:
标签: c# .net wpf xaml data-binding