<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(); >> } >> }>>