Files
ShrlAlgoToolkit/WPFluent/Markup/ImageIconExtension.cs

40 lines
1.3 KiB
C#
Raw Normal View History


using WPFluent.Controls;
using System.Windows.Markup;
namespace WPFluent.Markup;
/// <summary>
/// Custom <see cref="MarkupExtension"/> which can provide <see cref="ImageIcon"/>.
/// </summary>
/// <example>
/// <code lang="xml"> /// &lt;ui:Button /// Appearance="Primary" /// Content="WPF UI button with font icon" ///
/// Icon="{ui:ImageIcon '/my-icon.png'}" /&gt; ///</code> <code lang="xml"> /// &lt;ui:Button Icon="{ui:ImageIcon
/// 'pack://application:,,,/Assets/wpfui.png'}" /&gt; ///</code> <code lang="xml"> /// &lt;ui:HyperlinkButton
/// Icon="{ui:ImageIcon 'pack://application:,,,/Assets/wpfui.png'}" /&gt; ///</code> <code lang="xml"> ///
/// &lt;ui:TitleBar Icon="{ui:ImageIcon 'pack://application:,,,/Assets/wpfui.png'}" /&gt; ///</code>
/// </example>
[ContentProperty(nameof(Source))]
[MarkupExtensionReturnType(typeof(ImageIcon))]
public class ImageIconExtension : MarkupExtension
{
public ImageIconExtension(ImageSource? source) { Source = source; }
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;
}