Я создал imarkupextension для imagesource , который получает указанный символ из указанного шрифта и отображает его в указанном цвете с указанной высотой. В большинстве случаев название значка статично, и я пишу в XAML напрямую. Но иногда есть списки вещей, которые имеют свойство, которое определяет, какой значок следует использовать. Для этого случая необходимо, чтобы имя значка было связано.
[ContentProperty(nameof(IconName))]
public class FontImageExtension : IMarkupExtension
{
private readonly IconFontService iconFontService;
[TypeConverter(typeof(FontSizeConverter))]
public double Size { get; set; } = 30d;
public string IconName { get; set; }
public Color Color { get; set; }
public string FontFamily { get; set; }
public FontImageExtension()
{
iconFontService = SomeKindOfContainer.Resolve();
}
public ImageSource ProvideValue(IServiceProvider serviceProvider)
{
if (string.IsNullOrEmpty(IconName))
return null;
IconFont iconFont = iconFontService.GetIconFont();
if (iconFont == null)
return null;
string glyphCode = iconFont.GetGlyphCode(IconName);
if (string.IsNullOrEmpty(glyphCode))
return null;
FontImageSource fontImageSource = new FontImageSource()
{
FontFamily = iconFont.GetPlatformLocation(),
Glyph = glyphCode,
Color = this.Color,
Size = this.Size,
};
return fontImageSource;
}
object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
{
return ProvideValue(serviceProvider);
}
}
< /code>
Большую часть времени я использую его как это в XAML (который уже работает отлично): < /p>
< /code>
Но для динамического пользовательского интерфейса (например, списков или что -то в этом роде) мне это нужно, как это: < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/63922234/imarkupextension-with-bindable-properties[/url]
Я создал imarkupextension для imagesource , который получает указанный символ из указанного шрифта и отображает его в указанном цвете с указанной высотой. В большинстве случаев название значка статично, и я пишу в XAML напрямую. Но иногда есть списки вещей, которые имеют свойство, которое определяет, какой значок следует использовать. Для этого случая необходимо, чтобы имя значка было связано.[code][ContentProperty(nameof(IconName))] public class FontImageExtension : IMarkupExtension { private readonly IconFontService iconFontService;
[TypeConverter(typeof(FontSizeConverter))] public double Size { get; set; } = 30d;
public string IconName { get; set; }
public Color Color { get; set; }
public string FontFamily { get; set; }
public FontImageExtension() { iconFontService = SomeKindOfContainer.Resolve(); }
public ImageSource ProvideValue(IServiceProvider serviceProvider) { if (string.IsNullOrEmpty(IconName)) return null;
FontImageSource fontImageSource = new FontImageSource() { FontFamily = iconFont.GetPlatformLocation(), Glyph = glyphCode, Color = this.Color, Size = this.Size, };
return fontImageSource; }
object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider) { return ProvideValue(serviceProvider); } } < /code> Большую часть времени я использую его как это в XAML (который уже работает отлично): < /p>
< /code> Но для динамического пользовательского интерфейса (например, списков или что -то в этом роде) мне это нужно, как это: < /p>