2017-08-03 60 views
0

在我的Xamarin應用程序中,我通過編程創建了一個按鈕(Xamarin.Forms.Button)。我需要這個按鈕來顯示正常與懸停狀態下的不同背景圖像。我創建了一個類似於How to indicate currently selected control in Xamarin?中描述的樣式資源。但是,我無法弄清楚如何將這種風格應用到按鈕上。如何以編程方式將樣式關聯到Xamarin中的按鈕?

Button類公開了名爲Image的屬性,該屬性的類型爲FileImageSource。我發現加載我的風格資源最接近的API是ImageSource.FromResource靜態方法。但是,這種方法似乎返回StreamImageSource實例,這不是我們所需要的。

類別Button似乎沒有提供任何Style屬性。

您能否請您建議我如何以編程方式將樣式關聯到按鈕?問候。

+0

您可能要再次檢查,按鈕有一個Style屬性100%。 – Pedro

+0

關於圖像問題,如果它是嵌入到應用程序中的圖像,只需將'button.Image'分配給任何字符串,尤其是圖像文件名,即如果資源文件夾中有一個名爲「alert.png」的圖標,你可以將'button.Image'分配給''alert''並且它可以工作。 – Pedro

+0

佩德羅。在懸停狀態和正常狀態之間管理圖像還有很多工作要做。樣式使它簡單方便。另外,Button沒有style屬性。您可能正在考慮Android按鈕。 – Peter

回答

0

要實現此請求,您需要自定義渲染器。

爲了能夠運用自己的風格FE:「myButtonStyle.xml」你必須創建一個自定義渲染目標平臺:

安卓

[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); 
     } 
    } 
} 
相關問題