Привязка источника элементов DataGrid не обновляется при изменении значения ячейки - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть сетка данных, источником элементов которой является объект данных. Вот сетка данных:

<DataGrid Grid.Row="5" Grid.ColumnSpan="2" CanUserAddRows="False" 
          AutoGenerateColumns="False" Margin="10" x:Name="DataGridTransaction"
          ItemsSource="{Binding SalesDataGridList,NotifyOnSourceUpdated=True,NotifyOnTargetUpdated=True,UpdateSourceTrigger=PropertyChanged}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="BrandName" Binding="{Binding Brandname,Mode=OneWay}"/>
        <DataGridTextColumn Header="Rate" Binding="{Binding Rate,Mode=OneWay}"/>
        <DataGridTemplateColumn Header="Quantity" IsReadOnly="False">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding Inputquantity,UpdateSourceTrigger=LostFocus,Mode=TwoWay}" Margin="0" LostFocus="TextBox_LostFocus" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Header="Amount" Binding="{Binding Amount,UpdateSourceTrigger=LostFocus,Mode=TwoWay}" x:Name="AmountColumn"/>
    </DataGrid.Columns>
</DataGrid>

Также источник элементов Объект:

class SalesDataGrid
{
    string brandname;
    int inputquantity;
    int rate;
    int amount;

    public string Brandname { get => brandname; set => brandname = value; }
    public int Rate { get => rate; set => rate = value; }
    public int Inputquantity {
        get => inputquantity;
        set{
             inputquantity = value;
             inputquantity = quantity;
            Amount = quantity * rate;
        }
    } 
    public int Amount { get => amount; set => amount=value; }        
}

Вот что я пытаюсь сделать: Вы можете видеть это, так как источник данных в сетке данных это список объектов (связываемая коллекция), SalesDataGridList. Колонка количества - это текстовое поле, предназначенное для ввода данных от пользователя. Всякий раз, когда объект добавляется в список, сетка данных обновляется соответствующим образом. Также я поместил простую логику c в самом объекте, чтобы установить значение суммы (= Количество * Скорость), чтобы всякий раз, когда пользователь вводит значение количества. Значение переменной количества обновляется в списке объектов, но сетка данных не может показать изменение значения в птице данных. (Если дважды щелкнуть ячейку в столбце суммы, вы увидите обновленное значение, но я хочу, чтобы он обновлялся автоматически).


Примечание. Используемая мной среда MVVM (caliburn.micro) предоставляет функцию INotifyPropertyChanged (), но я не могу реализовать ее, поскольку сам объект должен наследовать от класса экрана (и я не думаю, что это так). Я попробовал этот метод, но он не сработал

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