я могу изменить значение столбца Quanity в сетке данных, но я не могу показаться, чтобы обновить общую ценовую колонку той же строке, используя событие celleditending это мой XAMLзначение одного столбца в сетке, изменив другой
<DataGrid AutoGenerateColumns="False" EnableColumnVirtualization="False" EnableRowVirtualization="False" IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding SelectedItem}" Grid.Row="3" Grid.ColumnSpan="2" Name="DataGrid1" ItemsSource="{Binding DataGridItemsSource, Mode=TwoWay, IsAsync=True}" Margin="10,10,10,10" PreviewKeyDown="DataGrid1_PreviewKeyDown" SelectionChanged="DataGrid1_SelectionChanged" CellEditEnding="DataGrid1_CellEditEnding" BeginningEdit="DataGrid1_BeginningEdit" >
<DataGrid.Columns>
<DataGridTextColumn Header="Item Name" IsReadOnly="True" Binding="{Binding Path=ItemName}" Width="*"></DataGridTextColumn>
<DataGridTextColumn Header="Item Price" IsReadOnly="True" Binding="{Binding Path=ItemPrice}" Width="*"></DataGridTextColumn>
<DataGridTextColumn x:Name="QuantityColumn" Header="Quantity" IsReadOnly="False" Binding="{Binding Path=Quantity, Mode=TwoWay}" Width="*"></DataGridTextColumn>
<DataGridTextColumn Header="Total Price" IsReadOnly="True" Binding="{Binding Path=TotalPrice, Mode=TwoWay}" Width="*"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
И это мой C# WPF для
private void DataGrid1_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
DataGrid dg = sender as DataGrid;
AddItem row = (AddItem)dg.SelectedItems[0];
}
из этого я могу легко получить новое значение количества, но не могу показаться, чтобы выяснить, как обновить столбец totalprice моего datagrid.itemsource того же ряда. любая помощь будет оценена
public class AddItem : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string ItemName { get; set; }
public float ItemPrice { get; set; }
public string Price { get; set; }
public int Quantity { get; set; }
public decimal TotalPrice { get; set; }
public int Size
{
get { return Quantity; }
set
{
Quantity = value;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Size"));
}
}
}
Это для AddItem, что я упускаю
У вас есть свойства «Quantity» и «TotalPrice» в модели представления элементов. работайте с ними, это намного проще, чем использование события CellEditEnding. 'INotifyPropertyChanged' - ваш друг – ASh
Также вы можете использовать ObservableCollection <> для свойства DataGridItemsSource. –