Как обновить свойство ReadOnly, привязанное к DataGrid - PullRequest
2 голосов
/ 31 января 2010

A имеет класс Order со свойством ReadOnly TotalPrice, которое вычисляется из других свойств класса. Через 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; } }
}

XAML-код для DataGrid

<!--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>

Свяжите класс с сеткой данных

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, он должен обновляться по мере обновления самого свойства TotalPrice. Мое потребление заключается в том, что, поскольку TotalPrice не обновляется, он не выдает уведомление, как это делают другие свойства, поэтому сетка данных не будет обновляться.

Спасибо за любые комментарии.

Редактировать: Позвольте мне уточнить мой вопрос.

Мне нужна система уведомлений, которая сообщает UI обновлять себя, когда свойство readonly изменяется из-за внутреннего изменения.

...