using MAX.Common.Helpers; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; namespace Store.Management.Framework.Controls { internal class HorizontalIconText : Control { public string Icon { get => (string)GetValue(IconProperty); set => SetValue(IconProperty, value); } public static readonly DependencyProperty IconProperty = DependencyProperty.Register( nameof(Icon), typeof(string), typeof(HorizontalIconText), new PropertyMetadata(null, OnOnIconChanged) ); public bool ShowIcon { get => (bool)GetValue(ShowIconProperty); private set => SetValue(ShowIconPropertyKey, value); } private static readonly DependencyPropertyKey ShowIconPropertyKey = DependencyProperty.RegisterReadOnly( nameof(ShowIcon), typeof(bool), typeof(HorizontalIconText), new PropertyMetadata(false) ); public static readonly DependencyProperty ShowIconProperty = ShowIconPropertyKey.DependencyProperty; public bool ShowSpace { get => (bool)GetValue(ShowSpaceProperty); private set => SetValue(ShowSpacePropertyKey, value); } private static readonly DependencyPropertyKey ShowSpacePropertyKey = DependencyProperty.RegisterReadOnly( nameof(ShowSpace), typeof(bool), typeof(HorizontalIconText), new PropertyMetadata(true) ); public static readonly DependencyProperty ShowSpaceProperty = ShowSpacePropertyKey.DependencyProperty; public string Text { get => (string)GetValue(TextProperty); set => SetValue(TextProperty, value); } public static readonly DependencyProperty TextProperty = DependencyProperty.Register( nameof(Text), typeof(string), typeof(HorizontalIconText), new PropertyMetadata(string.Empty) ); public double IconSize { get => (double)GetValue(IconSizeProperty); set => SetValue(IconSizeProperty, value); } public static readonly DependencyProperty IconSizeProperty = DependencyProperty.Register( nameof(IconSize), typeof(double), typeof(HorizontalIconText), new PropertyMetadata(14d) ); public double Spacing { get => (double)GetValue(SpacingProperty); set => SetValue(SpacingProperty, value); } public static readonly DependencyProperty SpacingProperty = DependencyProperty.Register( nameof(Spacing), typeof(double), typeof(HorizontalIconText), new PropertyMetadata(4d) ); private static void OnOnIconChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (d is HorizontalIconText view) { view.ShowIcon = view.Icon.IsNotBlank(); } } protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e) { base.OnPropertyChanged(e); if (e.Property == ShowSpaceProperty) { return; } ShowSpace = ShowIcon && Text.IsNotBlank(); } } }