/// <summary> /// Creates a combo box with data binding. /// </summary> /// <param name="propertyDefinition">The property definition.</param> /// <param name="bindingPath">The binding path.</param> /// <returns> /// A ComboBox. /// </returns> protected virtual FrameworkElement CreateComboBox(PropertyDefinition propertyDefinition, string bindingPath) { var c = new ComboBox { IsEditable = propertyDefinition.IsEditable, Focusable = false, Margin = new Thickness(0, 0, -1, -1) }; if (propertyDefinition.ItemsSource != null) { c.ItemsSource = propertyDefinition.ItemsSource; } else { if (propertyDefinition.ItemsSourceProperty != null) { var itemsSourceBinding = new Binding(propertyDefinition.ItemsSourceProperty); c.SetBinding(ItemsControl.ItemsSourceProperty, itemsSourceBinding); } } c.DropDownClosed += (s, e) => FocusParentDataGrid(c); var binding = propertyDefinition.CreateBinding(bindingPath); binding.NotifyOnSourceUpdated = true; c.SetBinding(propertyDefinition.IsEditable ? ComboBox.TextProperty : Selector.SelectedValueProperty, binding); var selectedValuePathAttribute = propertyDefinition.Descriptor.Attributes.OfType <SelectedValuePathAttribute>().FirstOrDefault(); if (selectedValuePathAttribute != null) { c.SelectedValuePath = selectedValuePathAttribute.Path; } return(c); }
private FrameworkElement CreateFilePicker(PropertyDefinition property, int index) { var c = new FilePicker { Filter = "Image Files (*.jpg, *.png)|*.jpg;*.png", UseOpenDialog = true, }; c.SetBinding(FilePicker.FilePathProperty, property.CreateBinding(index)); return c; }
/// <summary> /// Creates a color picker control with data binding. /// </summary> /// <param name="propertyDefinition">The property definition.</param> /// <param name="bindingPath">The binding path.</param> /// <returns> /// A color picker. /// </returns> protected virtual FrameworkElement CreateColorPickerControl(PropertyDefinition propertyDefinition, string bindingPath) { var c = new ColorPicker { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Stretch, Focusable = false }; c.SetBinding(ColorPicker.SelectedColorProperty, propertyDefinition.CreateBinding(bindingPath)); return(c); }
/// <summary> /// Creates a text box with data binding. /// </summary> /// <param name="propertyDefinition">The property definition.</param> /// <param name="bindingPath">The binding path.</param> /// <returns>A TextBox.</returns> protected virtual FrameworkElement CreateTextBox(PropertyDefinition propertyDefinition, string bindingPath) { var tb = new TextBox { HorizontalAlignment = HorizontalAlignment.Stretch, HorizontalContentAlignment = propertyDefinition.HorizontalAlignment, MaxLength = propertyDefinition.MaxLength, BorderThickness = new Thickness(0), Margin = new Thickness(1, 1, 0, 0) }; tb.SetBinding(TextBox.TextProperty, propertyDefinition.CreateBinding(bindingPath)); return(tb); }
/// <summary> /// Creates a check box control with data binding. /// </summary> /// <param name="propertyDefinition">The property definition.</param> /// <param name="bindingPath">The binding path.</param> /// <returns> /// A CheckBox. /// </returns> protected virtual FrameworkElement CreateCheckBoxControl(PropertyDefinition propertyDefinition, string bindingPath) { if (propertyDefinition.IsReadOnly) { var cm = new CheckMark { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = propertyDefinition.HorizontalAlignment }; cm.SetBinding(CheckMark.IsCheckedProperty, propertyDefinition.CreateBinding(bindingPath)); return(cm); } var c = new CheckBox { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = propertyDefinition.HorizontalAlignment, IsEnabled = !propertyDefinition.IsReadOnly }; c.SetBinding(ToggleButton.IsCheckedProperty, propertyDefinition.CreateBinding(bindingPath)); return(c); }
/// <summary> /// Creates a color preview control with data binding. /// </summary> /// <param name="propertyDefinition">The property definition.</param> /// <param name="bindingPath">The binding path.</param> /// <returns> /// A preview control. /// </returns> protected virtual FrameworkElement CreateColorPreviewControl(PropertyDefinition propertyDefinition, string bindingPath) { var c = new Rectangle { Stroke = Brushes.Black, StrokeThickness = 1, Width = 12, Height = 12, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center }; var binding = propertyDefinition.CreateBinding(bindingPath); binding.Converter = new ColorToBrushConverter(); c.SetBinding(Shape.FillProperty, binding); return(c); }
/// <summary> /// Creates a text box. /// </summary> /// <param name="d"> /// The definition. /// </param> /// <param name="index"> /// The index. /// </param> /// <returns> /// A TextBox. /// </returns> protected virtual FrameworkElement CreateTextBox(PropertyDefinition d, int index) { var tb = new TextBox { HorizontalAlignment = HorizontalAlignment.Stretch, HorizontalContentAlignment = d.HorizontalAlignment, MaxLength = d.MaxLength, BorderThickness = new Thickness(0), Margin = new Thickness(1, 1, 0, 0) }; tb.SetBinding(TextBox.TextProperty, d.CreateBinding(index)); return tb; }
/// <summary> /// Creates a combo box. /// </summary> /// <param name="d"> /// The definition. /// </param> /// <param name="index"> /// The index. /// </param> /// <returns> /// A ComboBox. /// </returns> protected virtual FrameworkElement CreateComboBox(PropertyDefinition d, int index) { var c = new ComboBox { IsEditable = d.IsEditable, Focusable = false, Margin = new Thickness(0, 0, -1, -1) }; if (d.ItemsSource != null) { c.ItemsSource = d.ItemsSource; } else { if (d.ItemsSourceProperty != null) { var itemsSourceBinding = new Binding(d.ItemsSourceProperty); c.SetBinding(ItemsControl.ItemsSourceProperty, itemsSourceBinding); } } c.DropDownClosed += (s, e) => FocusParentItemsGrid(c); var binding = d.CreateBinding(index); binding.NotifyOnSourceUpdated = true; c.SetBinding(d.IsEditable ? ComboBox.TextProperty : Selector.SelectedValueProperty, binding); return c; }
/// <summary> /// Creates a color preview control. /// </summary> /// <param name="d"> /// The definition. /// </param> /// <param name="index"> /// The index. /// </param> /// <returns> /// A preview control. /// </returns> protected virtual FrameworkElement CreateColorPreviewControl(PropertyDefinition d, int index) { var c = new Rectangle { Stroke = Brushes.Black, StrokeThickness = 1, Width = 12, Height = 12, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center }; var binding = d.CreateBinding(index); binding.Converter = new ColorToBrushConverter(); c.SetBinding(Shape.FillProperty, binding); return c; }
/// <summary> /// Creates a color picker control. /// </summary> /// <param name="d"> /// The definition. /// </param> /// <param name="index"> /// The index. /// </param> /// <returns> /// A color picker. /// </returns> protected virtual FrameworkElement CreateColorPickerControl(PropertyDefinition d, int index) { var c = new ColorPicker2 { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Stretch, Focusable = false }; c.SetBinding(ColorPicker2.SelectedColorProperty, d.CreateBinding(index)); return c; }
/// <summary> /// Creates a check box control. /// </summary> /// <param name="d"> /// The definition. /// </param> /// <param name="index"> /// The index. /// </param> /// <returns> /// A CheckBox. /// </returns> protected virtual FrameworkElement CreateCheckBoxControl(PropertyDefinition d, int index) { if (d.IsReadOnly) { var cm = new CheckMark { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = d.HorizontalAlignment }; cm.SetBinding(CheckMark.IsCheckedProperty, d.CreateBinding(index)); return cm; } var c = new CheckBox { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = d.HorizontalAlignment, IsEnabled = !d.IsReadOnly }; c.SetBinding(ToggleButton.IsCheckedProperty, d.CreateBinding(index)); return c; }
/// <summary> /// Creates a text box with data binding. /// </summary> /// <param name="propertyDefinition">The property definition.</param> /// <param name="bindingPath">The binding path.</param> /// <returns>A TextBox.</returns> protected virtual FrameworkElement CreateTextBox(PropertyDefinition propertyDefinition, string bindingPath) { var tb = new TextBox { HorizontalAlignment = HorizontalAlignment.Stretch, HorizontalContentAlignment = propertyDefinition.HorizontalAlignment, MaxLength = propertyDefinition.MaxLength, BorderThickness = new Thickness(0), Margin = new Thickness(1, 1, 0, 0) }; tb.SetBinding(TextBox.TextProperty, propertyDefinition.CreateBinding(bindingPath)); return tb; }
/// <summary> /// Creates a color picker control with data binding. /// </summary> /// <param name="propertyDefinition">The property definition.</param> /// <param name="bindingPath">The binding path.</param> /// <returns> /// A color picker. /// </returns> protected virtual FrameworkElement CreateColorPickerControl(PropertyDefinition propertyDefinition, string bindingPath) { var c = new ColorPicker { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Stretch, Focusable = false }; c.SetBinding(ColorPicker.SelectedColorProperty, propertyDefinition.CreateBinding(bindingPath)); return c; }
/// <summary> /// Creates a check box control with data binding. /// </summary> /// <param name="propertyDefinition">The property definition.</param> /// <param name="bindingPath">The binding path.</param> /// <returns> /// A CheckBox. /// </returns> protected virtual FrameworkElement CreateCheckBoxControl(PropertyDefinition propertyDefinition, string bindingPath) { if (propertyDefinition.IsReadOnly) { var cm = new CheckMark { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = propertyDefinition.HorizontalAlignment }; cm.SetBinding(CheckMark.IsCheckedProperty, propertyDefinition.CreateBinding(bindingPath)); return cm; } var c = new CheckBox { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = propertyDefinition.HorizontalAlignment, IsEnabled = !propertyDefinition.IsReadOnly }; c.SetBinding(ToggleButton.IsCheckedProperty, propertyDefinition.CreateBinding(bindingPath)); return c; }
/// <summary> /// Creates a combo box with data binding. /// </summary> /// <param name="propertyDefinition">The property definition.</param> /// <param name="bindingPath">The binding path.</param> /// <returns> /// A ComboBox. /// </returns> protected virtual FrameworkElement CreateComboBox(PropertyDefinition propertyDefinition, string bindingPath) { var c = new ComboBox { IsEditable = propertyDefinition.IsEditable, Focusable = false, Margin = new Thickness(0, 0, -1, -1) }; if (propertyDefinition.ItemsSource != null) { c.ItemsSource = propertyDefinition.ItemsSource; } else { if (propertyDefinition.ItemsSourceProperty != null) { var itemsSourceBinding = new Binding(propertyDefinition.ItemsSourceProperty); c.SetBinding(ItemsControl.ItemsSourceProperty, itemsSourceBinding); } } c.DropDownClosed += (s, e) => FocusParentDataGrid(c); var binding = propertyDefinition.CreateBinding(bindingPath); binding.NotifyOnSourceUpdated = true; c.SetBinding(propertyDefinition.IsEditable ? ComboBox.TextProperty : Selector.SelectedValueProperty, binding); var selectedValuePathAttribute = propertyDefinition.Descriptor.Attributes.OfType<SelectedValuePathAttribute>().FirstOrDefault(); if (selectedValuePathAttribute != null) { c.SelectedValuePath = selectedValuePathAttribute.Path; } return c; }