123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- using InABox.Wpf;
- using InABox.WPF;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Controls.Primitives;
- using System.Windows.Media;
- using System.Windows.Media.Effects;
- using System.Windows.Media.Imaging;
- namespace InABox.DynamicGrid;
- public class DynamicGridColumnFilterUIButton : Button
- {
- private BitmapImage _filterImage = Wpf.Resources.filter.AsBitmapImage();
- private BitmapImage _filterSetImage = Wpf.Resources.filter_set.AsBitmapImage();
- private readonly IDynamicGridColumnFilter Filter;
- public DynamicGridColumnFilterUIButton(IDynamicGridColumnFilter filter)
- {
- Filter = filter;
- Content = new Image { Source = filter.IsFiltered() ? _filterSetImage : _filterImage };
- Background = Colors.Transparent.ToBrush();
- BorderThickness = new(0);
- MaxHeight = 23;
- var btnStyle = new Style(typeof(Button));
- btnStyle.AddSetter(Button.TemplateProperty, TemplateGenerator.CreateControlTemplate(typeof(Button), () =>
- {
- var border = new Border
- {
- };
- border.Bind(Border.BackgroundProperty, this, x => x.Background);
- var content = new ContentPresenter();
- content.Bind(ContentPresenter.ContentProperty, this, x => x.Content);
- border.Child = content;
- return border;
- }));
- Style = btnStyle;
- Click += (o, e) =>
- {
- FilterButton_Click();
- };
- Loaded += DynamicGridColumnFilterUIButton_Loaded;
- Unloaded += DynamicGridColumnFilterUIButton_Unloaded;
- }
- private void DynamicGridColumnFilterUIButton_Loaded(object sender, RoutedEventArgs e)
- {
- Filter.FilterChanged += Filter_FilterChanged;
- }
- private void DynamicGridColumnFilterUIButton_Unloaded(object sender, RoutedEventArgs e)
- {
- Filter.FilterChanged -= Filter_FilterChanged;
- }
- private void Filter_FilterChanged(IDynamicGridColumnFilter obj)
- {
- Content = new Image
- {
- Source = Filter.IsFiltered() ? _filterSetImage : _filterImage
- };
- }
- private void FilterButton_Click()
- {
- var popup = new Popup
- {
- AllowsTransparency = true
- };
- var border = new Border
- {
- Width = 250,
- Height = 400,
- Background = Colors.White.ToBrush(),
- BorderBrush = Colors.Gray.ToBrush(),
- BorderThickness = new(1.0),
- Margin = new(5.0)
- };
- border.Effect = new DropShadowEffect
- {
- BlurRadius = 8,
- ShadowDepth = 0,
- Opacity = 0.5
- };
- border.Padding = new(5.0);
- var grid = new Grid();
- grid.AddRow(GridUnitType.Star);
- grid.AddRow(GridUnitType.Auto);
- grid.AddColumn(GridUnitType.Star);
- var clearButton = new Button
- {
- Content = "Clear Filter",
- Padding = new(5.0),
- Margin = new(0.0, 5.0, 0.0, 0.0)
- };
- clearButton.Click += (o, e) =>
- {
- Filter.ClearFilter();
- };
- var filterControl = Filter.CreateControl();
- grid.AddChild(filterControl, 0, 0);
- grid.AddChild(clearButton, 1, 0);
- border.Child = grid;
- popup.Child = border;
- popup.StaysOpen = false;
- popup.PlacementTarget = this;
- popup.Placement = PlacementMode.Left;
- popup.IsOpen = true;
- }
- }
|