using System.Windows.Markup; using System.Windows.Media.Imaging; using WPFluent.Controls; namespace WPFluent.Markup; /// /// HCWhite which can provide . /// /// /// /// <ui:Button /// Appearance="Primary" /// Content="WPF UI button with font icon" /// /// Icon="{ui:ImageIcon '/my-icon.png'}" /> /// /// <ui:Button Icon="{ui:ImageIcon /// 'pack://application:,,,/Assets/wpfui.png'}" /> /// /// <ui:HyperlinkButton /// Icon="{ui:ImageIcon 'pack://application:,,,/Assets/wpfui.png'}" /> /// /// /// <ui:TitleBar Icon="{ui:ImageIcon 'pack://application:,,,/Assets/wpfui.png'}" /> /// /// [ContentProperty(nameof(Source))] [MarkupExtensionReturnType(typeof(ImageIcon))] public class ImageIconExtension : MarkupExtension { public ImageIconExtension(ImageSource? source) { Source = source; } public ImageIconExtension(string source) { Source = new BitmapImage(new Uri(source, UriKind.RelativeOrAbsolute)); } public override object ProvideValue(IServiceProvider serviceProvider) { var imageIcon = new ImageIcon { Source = Source, Width = Width, Height = Height, }; return imageIcon; } public double Height { get; set; } = 16D; [ConstructorArgument("source")] public ImageSource? Source { get; set; } public double Width { get; set; } = 16D; }