A 有一个带有 ReadOnly TotalPrice 属性的 Order 类,该属性由该类的其他属性计算而来。通过 ObservableCollection,我绑定到 DataGrid。代码如下。
订单类
public class Order
{
public String Name { get; set; }
public Double Price { get; set; }
public Int32 Quantity { get; set; }
public Double TotalPrice { get { return Price * Quantity; } }
}
DataGrid 的 XAML 代码
<!--DataGrid-->
<my:DataGrid AutoGenerateColumns="False" Name="dgOrders" ItemsSource="{Binding}">
<my:DataGrid.Columns>
<my:DataGridTextColumn Binding="{Binding Name}" Header="Name" IsReadOnly="True" />
<my:DataGridTextColumn Binding="{Binding Price}" Header="Price" IsReadOnly="True" />
<my:DataGridTextColumn Binding="{Binding Quantity}" Header="Quantity" />
<my:DataGridTextColumn Binding="{Binding Total, Mode=OneWay}" Header="Total" IsReadOnly="True" />
</my:DataGrid.Columns>
</my:DataGrid>
将类绑定到 DataGrid
ObservableCollection<Order> Orders = new ObservableCollection<Order>();
Orders.Add(new Order() { Name = "Book", Quantity = 1, Price = 13 });
Orders.Add(new Order() { Name = "Pencil", Quantity = 2, Price = 4 });
Orders.Add(new Order() { Name = "Pen", Quantity = 1, Price = 2 });
dgOrders.DataContext = Orders;
现在,当用户更新 DataGrid TotalPrice 列上的 Quantity 列时,TotalPrice 属性会自行更新。我的消费是,由于 TotalPrice 没有更新,它不会像其他属性那样产生通知,因此数据网格不会更新。
感谢您的任何评论。
编辑:让我澄清我的问题。
我需要一种通知系统,当只读属性由于内部更改而发生更改时,它会告诉 UI 自行更新。