12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Media;
- using InABox.Core;
- using InABox.WPF;
- using Syncfusion.UI.Xaml.Grid;
- using Syncfusion.UI.Xaml.TreeGrid;
- namespace InABox.DynamicGrid;
- public class DynamicGridCodeColumn<TEntity> : DynamicGridEditorColumn<TEntity, CodeEditor, GridTemplateColumn, TreeGridTemplateColumn>
- where TEntity : BaseObject
- {
- protected override void Configure(GridTemplateColumn column, CodeEditor editor)
- {
- column.CellTemplate = CreateCellTemplate(editor, MappingName);
- column.EditTemplate = CreateEditTemplate(editor, column, MappingName);
- }
- protected override void Configure(TreeGridTemplateColumn column, CodeEditor editor)
- {
- column.CellTemplate = CreateCellTemplate(editor, TreeMappingName);
- column.EditTemplate = CreateEditTemplate(editor, column, TreeMappingName);
- }
- private DataTemplate CreateCellTemplate(CodeEditor editor, string mapping)
- {
- return TemplateGenerator.CreateDataTemplate
- (
- () =>
- {
- var result = new Label();
- result.HorizontalContentAlignment = GetHorizontalAlignment(editor);
- result.VerticalContentAlignment = GetVerticalAlignment(editor);
- var binding = new Binding()
- {
- Path = new PropertyPath(mapping),
- };
- result.SetBinding(Label.ContentProperty, binding);
- return result;
- }
- );
- }
- private DataTemplate CreateEditTemplate(CodeEditor editor, GridColumnBase column, string mapping)
- {
- return TemplateGenerator.CreateDataTemplate
- (
- () =>
- {
- var textbox = new TextBox();
- textbox.CharacterCasing = CharacterCasing.Upper;
- textbox.TextAlignment = column.TextAlignment;
- textbox.SetBinding(TextBox.TextProperty, new Binding()
- {
- Path = new PropertyPath(mapping)
- });
-
- textbox.SetValue(Grid.ColumnSpanProperty, 2);
- textbox.Padding = new Thickness(2, 0, 0, 0);
- textbox.VerticalContentAlignment = VerticalAlignment.Center;
- textbox.PreviewTextInput += (sender, args) => textbox.Tag = true;
- textbox.TextChanged += (sender, args) =>
- {
- if (Equals(textbox.Tag, false))
- {
- textbox.SelectAll();
- textbox.Tag = true;
- }
- };
- textbox.SetValue(FocusManagerHelper.FocusedElementProperty, true);
-
- return textbox;
- }
- );
- }
- public DynamicGridCodeColumn(DynamicGridColumn definition) : base(definition)
- {
- }
- }
|