2

クラスの他のプロパティから計算する 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 にそれ自体を更新するように指示する一種の通知システムが必要です。

4

0 に答える 0