У меня есть сетка данных, источником элементов которой является объект данных. Вот сетка данных:
<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 (), но я не могу реализовать ее, поскольку сам объект должен наследовать от класса экрана (и я не думаю, что это так). Я попробовал этот метод, но он не сработал