更新的属性没有反映在屏幕上
本文关键字:屏幕 属性 更新 | 更新日期: 2023-09-27 17:51:08
我有一个Datagrid
如下
<DataGridTextColumn Header="Amount" CellStyle="{StaticResource RightAlignedCellStyle}" Binding="{Binding AmountToAllocate, UpdateSourceTrigger=LostFocus, StringFormat='{}{0:#,0.00}'}" />
<DataGridTemplateColumn Header="Comment" Width="*" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Comment}" TextWrapping="WrapWithOverflow"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Add This Allocation" Command="ac:PICommands.AddAllocation" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
您将看到Grid的ItemSource
是属性RenewalRows
,它是一个ObservableCollection
,如下所示:-
public ObservableCollection<Data.Payment.UnitRenewalsRow> RenewalRows
{
get
{
return renewalRows;
}
set
{
renewalRows = value;
OnPropertyChanged("RenewalRows");
}
}
SelectedItem被绑定到SelectedRenewalRow
属性如下:-
public Data.Payment.UnitRenewalsRow SelectedRenewalRow
{
get
{
return renewalsRow;
}
set
{
renewalsRow = value;
//FullAllocationAmount();
OnPropertyChanged("SelectedRenewalRow");
}
}
在最后一列有一个调用命令的按钮。背后的代码如下:-
private void Allocate(object sender, ExecutedRoutedEventArgs e)
{
ap.AddAnAllocation();
}
ap是DataGrid ItemsSource="{Binding Source={StaticResource AllocatePaymentClass}, Path=RenewalRows}”
中引用的StaticResource
类代码如下:-
public void AddAnAllocation()
{
SelectedRenewalRow.Outstanding = SelectedRenewalRow.Outstanding + SelectedRenewalRow.AmountToAllocate;
Allocation allocation = new Allocation();
allocation.Amount = SelectedRenewalRow.AmountToAllocate;
allocation.PaymentInfo = Payment;
allocation.RenewalInfo = SelectedRenewalRow;
allocation.Propref = PropRef;
allocation.FullAddress = FullAddress;
Allocations.Add(allocation);
Payment.Allocations = Allocations;
//reset
SelectedRenewalRow.AmountToAllocate = 0;
}
我的问题是最后一行。一旦用户单击调用AddAnAllocation()
的按钮,我希望屏幕立即使用AmountToAllocate
属性更新DataGrid
中的选定行以显示为零。该属性是上面显示的RenewalRows
属性项上的一个字段。屏幕最终会更新,但只有在该行被取消选择然后重新选择之后,有时甚至只有在几秒钟后才会更新。
任何想法?如果您需要更多的信息或代码,请随时询问。
我不确定这是否有任何帮助,但似乎使用DataTables + datarow可能会导致过去与其他人的问题。
看这里
和