123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- using System.Collections;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Input;
- namespace InABox.DynamicGrid
- {
- public delegate void KanbanColumnCollapsedHandler(object sender, bool collapsed);
- /// <summary>
- /// Interaction logic for KanbanColumn.xaml
- /// </summary>
- public partial class DynamicKanbanColumn : UserControl
- {
- public static readonly DependencyProperty TitleProperty =
- DependencyProperty.Register("Title", typeof(string), typeof(DynamicKanbanColumn));
- public static readonly DependencyProperty CollapsedProperty =
- DependencyProperty.Register("Collapsed", typeof(bool), typeof(DynamicKanbanColumn));
- public static readonly DependencyProperty HeaderContextMenuProperty =
- DependencyProperty.Register("HeaderContextMenu", typeof(ContextMenu), typeof(DynamicKanbanColumn));
- public static readonly DependencyProperty ItemTemplateProperty =
- DependencyProperty.Register("ItemTemplate", typeof(DataTemplate), typeof(DynamicKanbanColumn));
- public static readonly DependencyProperty ItemContextMenuProperty =
- DependencyProperty.Register("ItemContextMenu", typeof(ContextMenu), typeof(DynamicKanbanColumn));
- public static readonly DependencyProperty ItemsSourceProperty =
- DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(DynamicKanbanColumn));
- private bool _collapsed;
- public DynamicKanbanColumn()
- {
- InitializeComponent();
- }
- public string Title
- {
- get => (string)GetValue(TitleProperty);
- set
- {
- ColumnTitle.Content = value;
- SetValue(TitleProperty, value);
- }
- }
- public bool Collapsed
- {
- get => (bool)GetValue(CollapsedProperty);
- set
- {
- _collapsed = value;
- ColumnGrid.ColumnDefinitions[0].Width = value ? new GridLength(0, GridUnitType.Pixel) : new GridLength(1, GridUnitType.Star);
- ColumnGrid.ColumnDefinitions[1].Width = value ? new GridLength(1, GridUnitType.Auto) : new GridLength(0, GridUnitType.Pixel);
- MinWidth = _collapsed ? 35.0F : 300.0F;
- OnCollapsed?.Invoke(this, value);
- SetValue(CollapsedProperty, value);
- }
- }
- public ContextMenu HeaderContextMenu
- {
- get => (ContextMenu)GetValue(HeaderContextMenuProperty);
- set => SetValue(HeaderContextMenuProperty, value);
- }
- public DataTemplate ItemTemplate
- {
- get => (DataTemplate)GetValue(ItemTemplateProperty);
- set => SetValue(ItemTemplateProperty, value);
- }
- public ContextMenu ItemContextMenu
- {
- get => (ContextMenu)GetValue(ItemContextMenuProperty);
- set => SetValue(ItemContextMenuProperty, value);
- }
- public IEnumerable ItemsSource
- {
- get => (IEnumerable)GetValue(ItemsSourceProperty);
- set => SetValue(ItemsSourceProperty, value);
- }
- public event KanbanColumnCollapsedHandler OnCollapsed;
- private void ExpandColumn_Click(object sender, MouseButtonEventArgs e)
- {
- Collapsed = false;
- }
- private void CollapseColumn_Click(object sender, MouseButtonEventArgs e)
- {
- Collapsed = true;
- }
- }
- }
|