Imarkupextension с привязывающими свойствамиC#

Место общения программистов C#
Ответить
Anonymous
 Imarkupextension с привязывающими свойствами

Сообщение Anonymous »

Я создал 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»