<DataGrid AutoGenerateColumns="False" Grid.Row="1" Grid.Column="3" > Height="Auto" > HorizontalAlignment="Stretch" > Margin="0" > Name="grdAirWayBillDetails" > VerticalAlignment="Stretch" > Width="Auto" > IsSynchronizedWithCurrentItem="True" > ItemsSource="{Binding Mode=default}" > SelectionMode="Single" > GridLinesVisibility="None" > HeadersVisibility="Column" > Grid.ColumnSpan="2" > > CanUserAddRows="False" > CanUserDeleteRows="False" > SelectionUnit="Cell" > Grid.RowSpan="4"> > <DataGrid.Resources> > <Style x:Key="AlignRight" TargetType="DataGridCell"> > <Setter Property="HorizontalAlignment" Value="Right" /> > > </Style> > <Style x:Key="AlignRightHeader" TargetType="DataGridColumnHeader"> > <Setter Property="HorizontalAlignment" Value="Right" /> > </Style> </DataGrid.Resources> > <DataGrid.Columns> > <DataGridComboBoxColumn Header="Charge Type" Width="2*" > DisplayMemberPath="cty_name" > SelectedValuePath="cty_pk" > SelectedValueBinding="{Binding awd_ctyfk, Mode=Default}"/> > > <DataGridTextColumn Header="Amount" Width="*" Binding="{Binding awd_amount, Mode=default}" > CellStyle="{StaticResource AlignRight}" > HeaderStyle="{StaticResource AlignRightHeader}"/> > </DataGrid.Columns> > </DataGrid>>
private void AddDetailRow() > { > AirWayBillDetailEntity entity = this.AirWayBillDetail.NewEntity(new AirWayBillDetailDefaults(this.AirWayBill.Entity.awb_pk)); > > // Select cell and begin edit > this.grdAirWayBillDetails.CommitEdit(); > > this.grdAirWayBillDetails.Focus(); > System.Windows.Controls.DataGridCellInfo cellInfo = new System.Windows.Controls.DataGridCellInfo(entity, this.grdAirWayBillDetails.Columns[0]); > this.grdAirWayBillDetails.SelectedCells.Clear(); > this.grdAirWayBillDetails.SelectedCells.Add(cellInfo); > this.grdAirWayBillDetails.CurrentCell = cellInfo; > this.grdAirWayBillDetails.BeginEdit(); > }>
void AirWayBillDetail_StateChange(mmBaseBusinessObject bizObj, mmBusinessStateChangeEventArgs e) > { > if (e.State == mmBusinessState.Retrieved) > { > // Store the Air WayBill Detail in the DataGrid's data context > this.grdAirWayBillDetails.DataContext = this.AirWayBillDetail.EntityList; > > // Hide the new item row place holder in the Air WayBill Detail DataGrid > ((IEditableCollectionView)CollectionViewSource.GetDefaultView(grdAirWayBillDetails.ItemsSource)).NewItemPlaceholderPosition = > NewItemPlaceholderPosition.None; > } > //this.ShowAirWayBillTotal(); > if (this.AirWayBillDetail.EntityList != null) > { > this.AirWayBillTotal = this.AirWayBillDetail.EntityList.Sum(x => x.awd_amount); > foreach (var c in this.AirWayBillDetail.EntityList) > { > c.PropertyChanged += CollectionItemChanged; > } > } > > }>
void CollectionItemChanged(object sender, PropertyChangedEventArgs e) > { > if (e.PropertyName == "awd_amount") > { > AirWayBillTotal = AirWayBillDetail.EntityList.Sum(x => x.awd_amount); > OnPropertyChanged("AirWayBillTotal"); > AddDetailRow(); > } > }>