我有课 Post_order
public class Post_zakaz
{
public Post_zakaz(int kod_t, string nazv_t, int kod_r, string nazv_r, double kol, double cena_ed)
{
this.kod_t = kod_t;
this.nazv_t = nazv_t;
this.kod_r = kod_r;
this.nazv_r = nazv_r;
this.kol = kol;
this.cena_ed = cena_ed;
this.obsh = kol * cena_ed;
}
public int index { get; set; }
public int kod_t { get; set; }
public string nazv_t { get; set; }
public int kod_r { get; set; }
public string nazv_r { get; set; }
public double kol { get; set; }
public double cena_ed { get; set; }
public double obsh { get; set; }
}
有一个变量用来存储从基数得到的值:
public static ObservableCollection<Post_zakaz> postzakazis = new ObservableCollection<Post_zakaz>();
接下来,有一个绑定到集合的 DataGrid:
<DataGrid Name="Grid" Grid.Row="1" ItemsSource="{Binding Mode=OneWay}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="№"></DataGridTextColumn>
<DataGridTextColumn Header="Товар" Width="*" IsReadOnly="True" Binding="{Binding Path=nazv_t}"></DataGridTextColumn>
<DataGridTextColumn Header="Разновидность" Width="*" IsReadOnly="True" Binding="{Binding Path=nazv_r}"></DataGridTextColumn>
<DataGridTextColumn Header="Количество" Width="*" Binding="{Binding Path=kol}" ></DataGridTextColumn>
<DataGridTextColumn Header="Цена за ед" Width="*" Binding="{Binding Path=cena_ed}"></DataGridTextColumn>
<DataGridTextColumn Header="Общая сумма" Width="*" Binding="{Binding Path=obsh}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
在“总金额”栏中,当“数量”或“单价”字段之一发生更改时,应重新计算“总金额”。现在只在填写的时候计算,因为 Post_zakaz类的obsh字段被分配一次。
我了解您需要为班级实施 INotifyPropertyChanged 吗?虽然我离它很远,但我正在努力理解。
如何正确实施这个想法? 也许您可以以某种方式更改 DataGrid 本身中的列?
所以我做了什么:
实现了 INPC 接口(还没有完全理解它是如何工作的。只知道它做了什么)
嗯,基本上什么都有!此外,如果对应的集合绑定到DataGrid,那么当单元格发生变化时,集合行中的对应属性也会发生变化。
非常感谢回复的人!您的回答有助于理解这一切并学习新事物!