如何以编程方式将样式与Xamarin中的按钮相关联?

时间:2017-08-03 23:43:29

标签: xamarin

在我的Xamarin应用中,我以编程方式创建了一个按钮(Xamarin.Forms.Button)。我需要此按钮在正常和悬停状态下显示不同的背景图像。我创建了一个类似于How to indicate currently selected control in Xamarin?中描述的样式资源。但是,我无法弄清楚如何将此样式应用于按钮。

Button类公开名为Image的{​​{1}}类型的属性。我发现加载我的样式资源的最近的API是FileImageSource静态方法。但是,此方法似乎返回ImageSource.FromResource实例,而这不是我们需要的。

StreamImageSource似乎没有提供任何Button属性。

您能否建议我如何以编程方式将样式与按钮相关联?问候。

1 个答案:

答案 0 :(得分:0)

To achieve this request you need custom renderers.

To be able to apply your style f.e.: "myButtonStyle.xml" you have to create a custom renderer for your target platform:

Android:

[assembly: ExportRenderer (typeof (YourExtendedButtonClass), typeof (MyCustomButtonRenderer))]
namespace YourApp.Droid
{
    public class MyCustomButtonRenderer : ButtonRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            base.OnElementChanged(e);
            var myButton = this.Control as Android.Widget.Button;
            myButton?.SetBackgroundResource(Resource.Drawable.myButtonStyle);
        }
    }
}