私は以下のコードで在庫を監査しています。 DataGridのactual_quantity
セルを編集すると、ItemAuditInstance
インスタンスは自動的に更新され、actual_quantity
と設定され、difference
と計算されます。私の問題は、DataGridが自動的actual_quantity
のためのセルをリフレッシュしなくdifference
テーブル全体を更新せずに特定のDataGrid列セル値をリフレッシュする方法
は、私はあなたがDataGridののItemsSourceが戻っリストにnullに設定することで、リフレッシュを強制することができます知っているが、私がいないとして、それは資源の無駄のように思えます1つの値に対して数百の行をリフレッシュしたい。これを行う方法はありますか?
ItemAuditInstance:
public class ItemAuditInstance : ReflectionObject {
public int id { get; set; }
public int bfk_item_audit_id { get; set; }
public string item { get; set; }
public int current_quantity { get; set; }
public int actual_quantity { get; set; }
public int difference { get; set; }
public int ds_actual_quantity {
get {
return actual_quantity;
}
set {
actual_quantity = value;
difference = current_quantity - actual_quantity;
}
}
XAML:
<DataGrid x:Name="dgItems" Margin="0,0,0,50" AutoGenerateColumns="False" HorizontalContentAlignment="Right" RowEditEnding="dgItems_RowEditEnding">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding item}" Header="Item" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding current_quantity}" Header="Current Quantity" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding ds_actual_quantity, UpdateSourceTrigger=PropertyChanged}" Header="Actual Quantity" IsReadOnly="False"/>
<DataGridTextColumn Binding="{Binding difference}" Header="Difference" IsReadOnly="True" Width="*"/>
</DataGrid.Columns>
</DataGrid>
こんにちは、ありがとう!しかし、私の謝罪は、私は私の問題をよく説明したとは思わない。それは「差」が更新されていないということではありません。それは、 '差分 'を表すDataGridのセルがリフレッシュされていないことです。私。差分が25になると、セルはまだ0を示します。 – Dilisqq
"UpdateSourceTrigger = PropertyChanged"は、更新を監視するようにセルに指示します。デフォルトでは、UpdateSourceTriggerは "OneTime"に設定されています。これは、ItemsSourceが変更されたとき(コレクション全体)の値を読み取る場合のみです。 PropertyChangedを使用すると、バインディングはプロパティが変更されたことを通知します私の答え(OnProperyChangedメソッドによる)に示されているように、INotifyPropertyChangedインターフェイス - 私は、変更が行われ、その値を更新する必要があることをDataGridに通知する方法を示しました。今すぐに理解してほしいと思っています – Rachey
待って、私はばかだ、申し訳ありません。私は 'ItemAuditInstance'に' InotifyPropertyChanged'を継承しなければならないことは分かりませんでした。一度それをしたら、あなたのコードがうまくいった。どうもありがとうございます! – Dilisqq