BoldSignA modern eSignature application with affordable pricing. Sign up today for unlimited document usage!
private void SampleDataGrid_AutoGeneratingColumn(object sender, AutoGeneratingColumnArgs e) { // this column should not be displayed e.Cancel = e.Column.MappingName == "ItemType"; // this column should not be editable e.Column.AllowEditing = e.Column.MappingName == "Value"; // this column should contain comboboxes, when Property "ItemType" is "nonregular" if (e.Column.MappingName == "ValueType") { e.Column.CellTemplateSelector = new DataTemplateSelectorExt(); return; } } public class DataTemplateSelectorExt : DataTemplateSelector { public override DataTemplate SelectTemplate(object item, DependencyObject container) { if (item == null || container == null) return base.SelectTemplate(item, container); if ((item as DataItem).ItemType != "nonregular") { var factory1 = new FrameworkElementFactory(typeof(TextBlock)); factory1.SetValue(TextBlock.TextProperty, "<default>"); factory1.SetValue(TextBlock.OpacityProperty, 0.2); return new DataTemplate { VisualTree = factory1 }; } else { var dataGrid = Application.Current.MainWindow.FindName("SampleDataGrid") as SfDataGrid; var factory2 = new FrameworkElementFactory(typeof(ComboBox)); factory2.SetBinding(ComboBox.ItemsSourceProperty, new Binding { Source = ((dataGrid)?.DataContext as SampleViewModel)?.ValueTypeSource }); factory2.SetValue(ComboBox.SelectedValuePathProperty, "Id"); factory2.SetValue(ComboBox.DisplayMemberPathProperty, "TypeName"); factory2.SetBinding(ComboBox.SelectedValueProperty, new Binding("ValueType") { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }); var trigger2 = new DataTrigger { Binding = new Binding("ItemType"), Value = "nonregular" }; return new DataTemplate { VisualTree = factory2 }; } return base.SelectTemplate(item, container); } } private void SampleDataGrid_Loaded(object sender, RoutedEventArgs e) { if(this.SampleDataGrid.View != null) this.SampleDataGrid.View.RecordPropertyChanged += View_RecordPropertyChanged; } private void View_RecordPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { var rowIndex = this.SampleDataGrid.ResolveToRowIndex((sender as DataItem)); (this.SampleDataGrid.DataContext as SampleViewModel).GridDataSource.Insert(rowIndex, sender as DataItem); } |
GridDataSource.Insert(rowIndex, sender as DataItem);
var sourceItem = sender as DataItem; var targetItem = new DataItem {ItemName = sourceItem.ItemName, ItemType = sourceItem.ItemType}; GridDataSource.Insert(rowIndex, targetItem);
var rowIndex = CostPlanningGrid.ResolveToRowIndex(sender as DataItem);
<Syncfusion:SfDataGrid x:Name="SampleDataGrid" ColumnSizer="AutoWithLastColumnFill" Margin="10" ItemsSource="{Binding GridDataSource}" EditTrigger="OnTap" AutoGenerateColumns="True"> <interactivity:Interaction.Behaviors> <local:InitialSetupBehaviour/> </interactivity:Interaction.Behaviors> </Syncfusion:SfDataGrid> |
List<string> list = new List<string>(); private void View_RecordPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { var rowIndex = this.AssociatedObject.ResolveToRowIndex((sender as DataItem)); var data = (sender as DataItem); if (!list.Contains(data.ItemName)) { (this.AssociatedObject.DataContext as SampleViewModel).GridDataSource.Insert(rowIndex, data); list.Add(data.ItemName); } } |
private void View_RecordPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
var id = sender.GetType().GetProperties().Single(pi => pi.Name.Equals("ItemName")).GetValue(sender, null);
} |