45 lines
1.5 KiB
C#
45 lines
1.5 KiB
C#
|
|
|
|
|
|
|
|
using System.Windows.Markup;
|
|
using System.Windows.Media.Imaging;
|
|
|
|
using WPFluent.Controls;
|
|
|
|
namespace WPFluent.Markup;
|
|
|
|
/// <summary>
|
|
/// HCWhite <see cref="MarkupExtension"/> which can provide <see cref="ImageIcon"/>.
|
|
/// </summary>
|
|
/// <example>
|
|
/// <code lang="xml"> /// <ui:Button /// Appearance="Primary" /// Content="WPF UI button with font icon" ///
|
|
/// Icon="{ui:ImageIcon '/my-icon.png'}" /> ///</code> <code lang="xml"> /// <ui:Button Icon="{ui:ImageIcon
|
|
/// 'pack://application:,,,/Assets/wpfui.png'}" /> ///</code> <code lang="xml"> /// <ui:HyperlinkButton
|
|
/// Icon="{ui:ImageIcon 'pack://application:,,,/Assets/wpfui.png'}" /> ///</code> <code lang="xml"> ///
|
|
/// <ui:TitleBar Icon="{ui:ImageIcon 'pack://application:,,,/Assets/wpfui.png'}" /> ///</code>
|
|
/// </example>
|
|
[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;
|
|
}
|