using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace InABox.DynamicGrid { /// /// Interaction logic for DynamicGridPopupColumnCell.xaml /// public partial class DynamicGridPopupColumnCell : UserControl, INotifyPropertyChanged { public static readonly DependencyProperty ValueProperty = DependencyProperty.Register( "Value", typeof(Guid), typeof(DynamicGridPopupColumnCell), new FrameworkPropertyMetadata( propertyChangedCallback: new PropertyChangedCallback(Value_Changed))); private string _display; public string Display { get => _display; set { _display = value; NotifyPropertyChanged(); } } public object? Value { get; set; } public delegate void SelectEvent(); public delegate void ClearEvent(); public delegate void ValueChangedEvent(Guid value); public SelectEvent? OnSelect; public ClearEvent? OnClear; public ValueChangedEvent? OnValueChanged; public event PropertyChangedEventHandler? PropertyChanged; public DynamicGridPopupColumnCell() { InitializeComponent(); } private void Select_Click(object sender, RoutedEventArgs e) { OnSelect?.Invoke(); } private void Clear_Click(object sender, RoutedEventArgs e) { OnClear?.Invoke(); } private void NotifyPropertyChanged([CallerMemberName] string propertyName = "") { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private static void Value_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { var cell = (DynamicGridPopupColumnCell)d; cell.OnValueChanged?.Invoke((Guid)d.GetValue(ValueProperty)); } } }