protected virtual GridDisplayConfiguration CreateDisplayedColumns() { var result = new GridDisplayConfiguration(); result.BuildColumns(ReferencedClass, GridDisplayConfiguration.Mode.ReadOnly, false); return(result); }
public void RefreshGridView(GridDisplayConfiguration cfg) { cfg.Columns.CollectionChanged += (s, e) => RefreshGridView(cfg); GridView view = new GridView() { AllowsColumnReorder = true }; this.View = view; foreach (var desc in cfg.Columns) { var col = new GridViewColumn() { Header = desc.Header }; if (desc.RequestedWidth > 0) { col.Width = desc.RequestedWidth; } DataTemplate result = new DataTemplate(); var cpFef = new FrameworkElementFactory(typeof(ContentPresenter)); cpFef.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(desc.Name), Mode = BindingMode.OneWay }); cpFef.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch); result.VisualTree = cpFef; col.CellTemplate = result; view.Columns.Add(col); } }
protected virtual GridDisplayConfiguration CreateDisplayedColumns() { var result = new GridDisplayConfiguration(); GridDisplayConfiguration.Mode mode = GridDisplayConfiguration.Mode.Editable; result.BuildColumns(ValueModel.CompoundObjectDefinition, mode, true); return(result); }
protected virtual GridDisplayConfiguration CreateDisplayedColumns() { var result = new GridDisplayConfiguration(); GridDisplayConfiguration.Mode mode = IsInlineEditable ? GridDisplayConfiguration.Mode.Editable : GridDisplayConfiguration.Mode.ReadOnly; result.BuildColumns(ReferencedClass, mode, true); return(result); }
protected virtual GridDisplayConfiguration CreateDisplayedColumns() { var result = new GridDisplayConfiguration(); result.BuildColumns(_dataType, GridDisplayConfiguration.Mode.Editable, true); // Fix column control kinds var editKind = NamedObjects.Gui.ControlKinds.Zetbox_App_GUI_EnumerationSelectorKind.Find(FrozenContext); foreach (var col in result.Columns) { col.ControlKind = editKind; col.GridPreEditKind = editKind; } return(result); }
private void Load() { Parent.FilterList.ResetUserFilter(); if (_selectedItem != null) { // Filter foreach (var f in _selectedItem.Object.Filter) { var props = f.Properties.Select(i => FrozenContext.FindPersistenceObject <Property>(i)).ToList(); var mdl = FilterModel.FromProperty(FrozenContext, props); int idx = 0; foreach (var val in f.Values ?? new object[] { }) { if (idx >= mdl.FilterArguments.Count) { break; } var valueMdl = mdl.FilterArguments[idx].Value; valueMdl.SetUntypedValue(ResolveUntypedValue(val, valueMdl)); idx++; } Parent.FilterList.AddFilter(mdl, true, props); } // Cols if (_selectedItem.Object.Columns != null && _selectedItem.Object.Columns.Count > 0) { Parent.DisplayedColumns.Columns.Clear(); foreach (var col in _selectedItem.Object.Columns) { var props = col.Properties.Select(i => FrozenContext.FindPersistenceObject <Property>(i)).ToArray(); Parent.DisplayedColumns.Columns.Add(GridDisplayConfiguration.CreateColumnDisplayModel(GridDisplayConfiguration.Mode.ReadOnly, props)); } } } }
public static void RefreshGridView(ListView lst, GridDisplayConfiguration cfg, DependencyProperty sortProperty) { GridView view = new GridView() { AllowsColumnReorder = true }; lst.View = view; if (cfg.ShowIcon) { view.Columns.Add(new GridViewColumn() { CellTemplate = (DataTemplate)lst.FindResource("iconCellTemplate") }); } if (cfg.ShowId) { var col = new GridViewColumn() { CellTemplate = (DataTemplate)lst.FindResource("idCellTemplate"), Header = "ID" }; view.Columns.Add(col); // SetSortPropertyName(col, "ID"); } if (cfg.ShowName) { var col = new GridViewColumn() { CellTemplate = (DataTemplate)lst.FindResource("nameCellTemplate"), Header = "Name" }; view.Columns.Add(col); // Not possible // SetSortPropertyName(col, "Name"); } foreach (var desc in cfg.Columns) { // TODO: use default controls after moving labeling to infrastructure var col = new GridViewColumn() { Header = desc.Header }; if (desc.RequestedWidthAbsolute != null) { col.Width = desc.RequestedWidthAbsolute.Value; } else if (desc.RequestedWidth != WidthHint.Default) { col.Width = TranslateWidth(desc.RequestedWidth); } DataTemplate result = new DataTemplate(); var cpFef = new FrameworkElementFactory(typeof(ContentPresenter)); switch (desc.Type) { case ColumnDisplayModel.ColumnType.MethodModel: cpFef.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(String.Format("ActionViewModelsByName[{0}]", desc.Name)), Mode = BindingMode.OneWay }); break; case ColumnDisplayModel.ColumnType.PropertyModel: { if (sortProperty != null) { col.SetValue(sortProperty, desc.Name); } var tmp = desc.Name.Split('.').Select(i => String.Format("PropertyModelsByName[{0}]", i)); var binding = string.Join(".Value.", tmp.ToArray()); cpFef.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(binding), Mode = BindingMode.OneWay }); break; } case ColumnDisplayModel.ColumnType.Property: cpFef.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(desc.Name), Mode = BindingMode.OneWay }); break; } cpFef.SetValue(VisualTypeTemplateSelector.RequestedKindProperty, desc.ControlKind); cpFef.SetValue(ContentPresenter.ContentTemplateSelectorProperty, lst.FindResource("defaultTemplateSelector")); cpFef.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch); result.VisualTree = cpFef; col.CellTemplate = result; view.Columns.Add(col); } }
public static void RefreshGridView(DataGrid lst, GridDisplayConfiguration cfg, DependencyProperty sortProperty) { lst.Columns.Clear(); if (cfg.ShowIcon) { lst.Columns.Add(new DataGridTemplateColumn() { CellTemplate = (DataTemplate)lst.FindResource("iconCellTemplate") }); } if (cfg.ShowId) { var col = new DataGridTemplateColumn() { CellTemplate = (DataTemplate)lst.FindResource("idCellTemplate"), Header = "ID" }; lst.Columns.Add(col); // SetSortPropertyName(col, "ID"); } if (cfg.ShowName) { var col = new DataGridTemplateColumn() { CellTemplate = (DataTemplate)lst.FindResource("nameCellTemplate"), Header = "Name" }; lst.Columns.Add(col); // Not possible // SetSortPropertyName(col, "Name"); } foreach (var desc in cfg.Columns) { // TODO: use default controls after moving labeling to infrastructure var col = new DataGridTemplateColumn() { Header = desc.Header }; if (desc.RequestedWidthAbsolute != null) { col.Width = desc.RequestedWidthAbsolute.Value; } else if (desc.RequestedWidth != App.GUI.WidthHint.Default) { col.Width = TranslateWidth(desc.RequestedWidth); } var needEditor = desc.ControlKind != desc.GridPreEditKind; var editorFactory = needEditor ? new FrameworkElementFactory(typeof(ContentPresenter)) : null; var labelFactory = new FrameworkElementFactory(typeof(ContentPresenter)); switch (desc.Type) { case ColumnDisplayModel.ColumnType.MethodModel: if (needEditor) { editorFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(String.Format("Object.ActionViewModelsByName[{0}]", desc.Name)), Mode = BindingMode.OneWay }); } labelFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(String.Format("Object.ActionViewModelsByName[{0}]", desc.Name)), Mode = BindingMode.OneWay }); break; case ColumnDisplayModel.ColumnType.PropertyModel: { // Only database properties can be sorted // TODO: On the client side, maybe also Calculated Properties and ViewModels Properties if (sortProperty != null) { col.SetValue(sortProperty, desc.Name); } var tmp = desc.Name.Split('.').Select(i => String.Format("PropertyModelsByName[{0}]", i)); var binding = "Object." + string.Join(".Value.", tmp.ToArray()); if (needEditor) { editorFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(binding), Mode = BindingMode.OneWay }); } labelFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(binding), Mode = BindingMode.OneWay }); break; } case ColumnDisplayModel.ColumnType.Property: if (needEditor) { editorFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath("Object." + desc.Name), Mode = BindingMode.OneWay }); } labelFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath("Object." + desc.Name), Mode = BindingMode.OneWay }); break; } if (needEditor) { editorFactory.SetValue(VisualTypeTemplateSelector.RequestedKindProperty, desc.ControlKind); editorFactory.SetValue(ContentPresenter.ContentTemplateSelectorProperty, lst.FindResource("defaultTemplateSelector")); editorFactory.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch); } labelFactory.SetValue(VisualTypeTemplateSelector.RequestedKindProperty, desc.GridPreEditKind); labelFactory.SetValue(ContentPresenter.ContentTemplateSelectorProperty, lst.FindResource("defaultTemplateSelector")); labelFactory.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch); col.CellTemplate = new DataTemplate() { VisualTree = labelFactory }; // set editing template only if different if (needEditor) { col.CellEditingTemplate = new DataTemplate() { VisualTree = editorFactory }; } lst.Columns.Add(col); } }