private static TriggerBase CreateTrigger(EntityFieldInfo fieldInfo, IDataService dataService, GenericDataListState state, Nullable<Boolean> isLocked, FrameworkElement element) { TriggerBase trigger = null; if (isLocked.HasValue) { MultiDataTrigger multiDataTrigger = new MultiDataTrigger(); Condition conditionState = new Condition(); conditionState.Binding = CreateBindingState(element); conditionState.Value = state; multiDataTrigger.Conditions.Add(conditionState); Condition conditionIsLocked = new Condition(); conditionIsLocked.Binding = CreateBindingIsLocked(element); conditionIsLocked.Value = isLocked.Value; multiDataTrigger.Conditions.Add(conditionIsLocked); multiDataTrigger.Setters.Add(DataControlTemplateBuilder.CreateSetter(fieldInfo, dataService, state, isLocked, element)); trigger = multiDataTrigger; } else { DataTrigger dataTrigger = new DataTrigger(); dataTrigger.Binding = DataControlTemplateBuilder.CreateBindingState(element); dataTrigger.Value = state; dataTrigger.Setters.Add(DataControlTemplateBuilder.CreateSetter(fieldInfo, dataService, state, isLocked, element)); trigger = dataTrigger; } return trigger; }
private static SetterBase CreateSetter(EntityFieldInfo fieldInfo, IDataService dataService, GenericDataListState state, bool? isLocked, FrameworkElement element) { Setter setter = new Setter(); setter.Property = ContentControl.ContentTemplateProperty; setter.Value = DataControlTemplateBuilder.CreateTemplate(fieldInfo, dataService, state, isLocked,element); return setter; }
private static Binding CreateBindingState(GenericDataListState genericDataListState, DataGrid dataGrid) { Binding binding = new Binding(); binding.Source = dataGrid; binding.Path = new PropertyPath("DataContext.State"); binding.Mode = BindingMode.OneWay; binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; return binding; }
private static DataTrigger CreateTrigger(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { DataTrigger dataTrigger = new DataTrigger(); dataTrigger.Binding = CreateBindingState(state, dataGrid); dataTrigger.Value = state; dataTrigger.Setters.Add(CreateSetter(entityFieldInfo, state, dataGrid)); return dataTrigger; }
private static FrameworkElementFactory CreateTemplateText(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { FrameworkElementFactory textBox = new FrameworkElementFactory(typeof(TextBox)); textBox.SetBinding(TextBox.TextProperty, CreateBindingTwoWay(entityFieldInfo.Path)); return textBox; }
private static FrameworkElementFactory CreateTemplateDate(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { FrameworkElementFactory grid = new FrameworkElementFactory(typeof(Grid)); var column1 = new FrameworkElementFactory(typeof(ColumnDefinition)); column1.SetValue(ColumnDefinition.WidthProperty, new GridLength(1, GridUnitType.Star)); var column2 = new FrameworkElementFactory(typeof(ColumnDefinition)); column2.SetValue(ColumnDefinition.WidthProperty, new GridLength(1, GridUnitType.Auto)); grid.AppendChild(column1); grid.AppendChild(column2); FrameworkElementFactory textBox = new FrameworkElementFactory(typeof(TextBox)); textBox.SetBinding(TextBox.TextProperty, CreateBindingTwoWay(entityFieldInfo.Path)); textBox.SetValue(Grid.ColumnProperty, 0); grid.AppendChild(textBox); FrameworkElementFactory datePicker = new FrameworkElementFactory(typeof(DatePicker)); datePicker.SetValue(DatePicker.WidthProperty, 28D); datePicker.SetValue(Grid.ColumnProperty, 1); grid.AppendChild(datePicker); Binding bindingSelectedDate = new Binding("[" + entityFieldInfo.Path + "]"); bindingSelectedDate.Mode = BindingMode.TwoWay; bindingSelectedDate.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; bindingSelectedDate.Converter = new StringToDateConverter(); datePicker.SetBinding(DatePicker.SelectedDateProperty, bindingSelectedDate); return grid; }
private static FrameworkElementFactory CreateTemplateCombo(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { String[] items = entityFieldInfo.Path.Split(".".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); FrameworkElementFactory comboBox = new FrameworkElementFactory(typeof(ComboBox)); if (state == GenericDataListState.Search) { comboBox.SetValue(ComboBox.IsEditableProperty, true); } String comboListPath = "ComboItemsSource[" + items[items.Length - 2] + "." + items[items.Length - 1] + "]"; Binding bindingList = new Binding(comboListPath); bindingList.Mode = BindingMode.OneWay; bindingList.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; comboBox.SetBinding(ComboBox.ItemsSourceProperty, bindingList); Binding binding = new Binding(); binding.Path = new PropertyPath("[" + entityFieldInfo.Path + "]"); binding.Mode = BindingMode.TwoWay; binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; binding.ValidatesOnDataErrors = true; comboBox.SetBinding(ComboBox.SelectedItemProperty, binding); return comboBox; }
private static FrameworkElementFactory CreateTemplateColor(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { FrameworkElementFactory colorPicker = new FrameworkElementFactory(typeof(ColorPicker)); Binding binding = CreateBindingTwoWay(entityFieldInfo.Path); binding.Converter = new StringToColorConverter(); colorPicker.SetBinding(ColorPicker.SelectedColorProperty, binding); return colorPicker; }
private static FrameworkElementFactory CreateTemplateCheck(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { FrameworkElementFactory comboBox = new FrameworkElementFactory(typeof(ComboBox)); if (state == GenericDataListState.Search) { comboBox.SetValue(ComboBox.IsEditableProperty, true); } List<String> items = new List<string>(); items.Add(CultureConfiguration.BooleanNullString); items.Add(CultureConfiguration.BooleanTrueString); items.Add(CultureConfiguration.BooleanFalseString); comboBox.SetValue(ComboBox.ItemsSourceProperty, items); Binding binding = new Binding(); binding.Path = new PropertyPath("[" +entityFieldInfo.Path +"]"); binding.Mode = BindingMode.TwoWay; binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; binding.ValidatesOnDataErrors = true; comboBox.SetBinding(ComboBox.SelectedItemProperty, binding); return comboBox; }
private static DataTemplate CreateTemplate(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { DataTemplate dataTemplate = new DataTemplate(); if (entityFieldInfo.IsNeeded == false && entityFieldInfo.IsMainTableField == false && state != GenericDataListState.Search) { return CreateCellTemplate(entityFieldInfo, dataGrid); } else { switch (entityFieldInfo .ControlType ) { case Infrastructure.Attributes.ControlType.Check : dataTemplate.VisualTree = CreateTemplateCheck(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Color : dataTemplate.VisualTree = CreateTemplateColor(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Date : dataTemplate.VisualTree = CreateTemplateDate(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Decimal : dataTemplate.VisualTree = CreateTemplateDecimal(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Integer : dataTemplate.VisualTree = CreateTemplateInteger(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Pr : dataTemplate.VisualTree = CreateTemplatePr(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Text : dataTemplate.VisualTree = CreateTemplateText(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Combo: dataTemplate.VisualTree = CreateTemplateCombo(entityFieldInfo, state, dataGrid); break; } } return dataTemplate; }
private static Setter CreateSetter(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { Setter setter = new Setter(); setter.Property = ContentControl.ContentTemplateProperty; setter.Value = CreateTemplate(entityFieldInfo, state, dataGrid); return setter; }
private static object CreateTemplate(EntityFieldInfo fieldInfo, IDataService dataService, GenericDataListState state, bool? isLocked, FrameworkElement element) { if (isLocked.HasValue) { if (isLocked.Value == true) { if (state == GenericDataListState.Deleting) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService,element); } else if (state == GenericDataListState.Display) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else if (state == GenericDataListState.InsertingDisplay) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.InsertingEmpty) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.Search) { return DataControlTemplateBuilder.CreateTemplateSearch(fieldInfo, dataService, element); } else if (state == GenericDataListState.Updating) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } } else { if (state == GenericDataListState.Deleting) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else if (state == GenericDataListState.Display) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.InsertingDisplay) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.InsertingEmpty) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.Search) { return CreateTemplateSearch(fieldInfo, dataService, element); } else if (state == GenericDataListState.Updating) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } } } else { if (state == GenericDataListState.Deleting) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else if (state == GenericDataListState.Display) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else if (state == GenericDataListState.InsertingDisplay) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.InsertingEmpty) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.Search) { return DataControlTemplateBuilder.CreateTemplateSearch(fieldInfo, dataService, element); } else if (state == GenericDataListState.Updating) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } } return null; }