Я запускаю ICommand
, когда ячейка меняется в моем DataGrid
:
PageStock.xaml
<DataGrid ItemsSource="{Binding StockQuantities}"
SelectedItem="{Binding SelectedStockQuantity}"
x:Name="dataGridConsignments"
Margin="10,47,10,9.6"
ColumnWidth="*" AutoGenerateColumns="False">
<i:Interaction.Triggers>
<i:EventTrigger EventName="CellEditEnding">
<i:InvokeCommandAction Command="{Binding Test}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Header="Bell Number" Width="100" Binding="{Binding BellNumber}"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" Header="Description" Binding="{Binding Description}"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="False" Header="Quantity" Width="100" Binding="{Binding Quantity}" ></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
Но когда ICommand
горит, я вижу, что SelectedStockQuantity
по-прежнему содержит старый Quantity
:
PageStockViewModel.cs
public StockQuantityViewModel SelectedStockQuantity { get; set; }
private ICommand test;
public ICommand Test
{
get
{
return test
?? (test = new ActionCommand(() =>
{
var stockQ = StockQuantities.FirstOrDefault(sq => SelectedStockQuantity.Id == sq.Id);
Commands.UpdateStockQuantity(stockQ.BellNumber, SelectedStockQuantity.Quantity);
}));
}
}
Если я затем снова изменить ячейку безпри переходе на новую страницу будет применено предыдущее значение (я вижу его в SelectedStockQuantity.Quantity
)
Почему это происходит?Как я могу получить только что отредактированное значение в моем ICommand
?
StockQuantityViewModel
class StockQuantityViewModel : BaseViewModel
{
public int Id { get; set; }
public StockQuantity StockQuantity { get; set; }
public string BellNumber { get; set; }
public string ArtemisNumber { get; set; }
public int Quantity { get; set; }
public string Description { get; set; }
public StockQuantityViewModel(StockQuantity stockQuantity)
{
StockQuantity = stockQuantity;
Id = stockQuantity.id;
BellNumber = stockQuantity.Part.BellNumber;
ArtemisNumber = stockQuantity.Part.ArtemisNumber;
Quantity = stockQuantity.Quantity;
Description = stockQuantity.Part.Description;
}
}