Я привязываю динамическую c коллекцию к datagrid
из ViewModel
, используя подход MVVM, например:
var Data = (
from main in db.MainSaleInvoiceTbls
join detial in db.DetialSaleInvoiceTbls
on main.Id equals detial.MainSaleInvoiceId into gDate
from gdetial in gDate.DefaultIfEmpty()
where main.IsActive == true
&& main.CompanyId == UniversalInfo.UserCompany.Id
&& main.MainSaleInvoiceDataType == MainSaleInvoiceType.POInvoice
&& main.FinancialYearId == UniversalInfo.SelectedFinancialYear.Id
orderby main.Id
select
new
{
Id=main.Id,
Sr_No=0,
Date = main.Date.Value,
Voucher = main.FinancialVoucher,
Invoice_Account = main.Vendor == null ? string.Empty : main.Vendor.AccountCode,
Vendor_Name = main.Vendor == null ? string.Empty : main.Vendor.VendorName,
Vendor_Group = main.Vendor == null ? string.Empty : main.Vendor.VendorGroup.Name,
Invoice = main.SaleOrderPrefix + main.SaleOrderNumber,
Purchase_Order = main.SalesId,
Sales_Tax = "",
Invoice_Amount= gDate.Sum(x=>x.Quantity * x.UnitPrice)
});
DataGridCollection = new ObservableCollection<dynamic>(data);
XML Код для привязки данных к сетке:
<DataGrid x:Name="miscListDataGrid"
VerticalAlignment="Stretch"
ScrollViewer.IsDeferredScrollingEnabled="True"
VirtualizingPanel.IsContainerVirtualizable="True"
VirtualizingPanel.IsVirtualizing="True"
EnableRowVirtualization="True"
EnableColumnVirtualization="True"
ItemsSource="{Binding Path=DataGridCollection,IsAsync=True,Mode=TwoWay,NotifyOnTargetUpdated=True,NotifyOnSourceUpdated=True,ValidatesOnDataErrors=True,UpdateSourceTrigger=PropertyChanged,ValidatesOnExceptions=True}"
AutoGenerateColumns="True"
Grid.Row="2"
RowDetailsVisibilityMode="VisibleWhenSelected"
Grid.ColumnSpan="2"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="False"
IsReadOnly="True"
>
</DataGrid>
введите описание изображения здесь
Мое требование: как выровнять numeri c col по правой стороне? Я попытался использовать события AutoGeneratingColumn
и RowDetailsVisibilityChanged
, чтобы узнать, когда DataGrid инициализирует свои столбцы и запускает эти события. AutoGeneratingColumn
срабатывает при первом заполнении столбцов в сетке. это не позволяет изменить CellStyle
или Alignment
на правую сторону. Если бы кто-нибудь мог пролить свет на то, как событие запускается для форматирования столбцов, это действительно помогло бы.
Спасибо за ваше время.