在我的Xamarin应用中,我以编程方式创建了一个按钮(Xamarin.Forms.Button)
。我需要此按钮在正常和悬停状态下显示不同的背景图像。我创建了一个类似于How to indicate currently selected control in Xamarin?中描述的样式资源。但是,我无法弄清楚如何将此样式应用于按钮。
Button
类公开名为Image
的{{1}}类型的属性。我发现加载我的样式资源的最近的API是FileImageSource
静态方法。但是,此方法似乎返回ImageSource.FromResource
实例,而这不是我们需要的。
类StreamImageSource
似乎没有提供任何Button
属性。
您能否建议我如何以编程方式将样式与按钮相关联?问候。
答案 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);
}
}
}