Skip to content

Instantly share code, notes, and snippets.

@tkouba
Created February 25, 2020 13:24
Show Gist options
  • Save tkouba/1407d4e9ffd8a82833d6645586392f64 to your computer and use it in GitHub Desktop.
Save tkouba/1407d4e9ffd8a82833d6645586392f64 to your computer and use it in GitHub Desktop.
Xamarin custom button renderrer for buttons with FontImagesource
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Platform.WPF;
using MyDemo.WPF.Renderers;
[assembly: ExportRenderer(typeof(Xamarin.Forms.Button), typeof(FontImageButtonRenderrer))]
namespace MyDemo.WPF.Renderers
{
public class FontImageButtonRenderrer : ButtonRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
UpdateFontImageColor();
base.OnElementChanged(e);
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == Button.TextProperty.PropertyName ||
e.PropertyName == Button.ImageSourceProperty.PropertyName ||
e.PropertyName == Button.TextColorProperty.PropertyName)
{
UpdateFontImageColor();
}
base.OnElementPropertyChanged(sender, e);
}
private void UpdateFontImageColor()
{
if (Element.ImageSource != null && Element.ImageSource is FontImageSource)
{
((FontImageSource)Element.ImageSource).Color = Element.TextColor == Color.Default ?
Color.FromRgba(System.Windows.SystemColors.WindowTextColor.R,
System.Windows.SystemColors.WindowTextColor.G,
System.Windows.SystemColors.WindowTextColor.B,
System.Windows.SystemColors.WindowTextColor.A) :
Element.TextColor;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment