Обновление ячейки DataGrid работает только для свойств корневого объекта - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть эта сущность

public class StockQuantity : EntityBase
{
    public virtual Part Part { get; set; }
    public int Quantity { get; set; }
    public int PartId { get; internal set; }
}

Где Part

public class Part : EntityBase
{
    public string OEMNumber { get; set; }
    public string BellNumber { get; set; }
    public string Description { get; set; }
    public string CountryOfOrigin { get; set; }
    [Column(TypeName = "decimal(9, 3)")]
    public double Weight { get; set; }

    public virtual StockQuantity StockQuantity { get; set; }
    public virtual ICollection<PartQuantity> PartQuantities { get; set; }

    public virtual CountryCode CountryCode { get; set; }
}

К которой я привязываюсь DataGrid

<DataGrid ItemsSource="{Binding StockQuantities}" 
            SelectedItem="{Binding SelectedStockQuantity}"
            x:Name="dataGridConsignments" 
            Margin="10,47,10,9.6"
            ColumnWidth="*" AutoGenerateColumns="False" CanUserAddRows="True">

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="CellEditEnding">
            <i:InvokeCommandAction Command="{Binding UpdateQuantity}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>

    <DataGrid.Columns>
        <DataGridTextColumn IsReadOnly="True" Header="Bell Number" Width="100" Binding="{Binding Part.BellNumber}"></DataGridTextColumn>
        <DataGridTextColumn IsReadOnly="False" Header="Description" Binding="{Binding Part.Description}"></DataGridTextColumn>
        <DataGridTextColumn IsReadOnly="False" Header="COO" Binding="{Binding Part.CountryCode.Code}"></DataGridTextColumn>

        <DataGridTextColumn IsReadOnly="False" Header="Quantity" Width="100" Binding="{Binding Quantity,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></DataGridTextColumn>
    </DataGrid.Columns>
    <DataGrid.InputBindings>
        <MouseBinding Gesture="LeftDoubleClick"  Command="{Binding RowDoubleClick}"/>
    </DataGrid.InputBindings>
</DataGrid>

В моем ViewModel У меня есть эта команда, которая запускается всякий раз, когда редактируется ячейка:

public ICommand UpdateQuantity
{
    get
    {
        return updateQuantity
            ?? (updateQuantity = new ActionCommand(() =>
            {
                if (SelectedStockQuantity == null)
                    return;
                var stockQ = AllStockQuantities.FirstOrDefault(sq => SelectedStockQuantity.Id == sq.Id);
                if (stockQ == null)
                    return;
                StandardDatabase.Commands.UpdateStockQuantity(stockQ.Part.Id, SelectedStockQuantity.Quantity, SelectedStockQuantity.Part.CountryCode.Code);
            }));
    }

}

Проблема в том, что при запуске команды я вижу обновленное значение для Quantity (которое является свойством корневого уровняStockQuantity), но когда я пытаюсь обновить CountryCode или Description, исходное значение все еще сохраняется в SelectedStockQuantity, и поэтому оно не обновляется в БД.

Кто-нибудь знаеткак я могу заставить SelectedStockQuantity обновить свойства дочернего объекта в этом контексте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...