2016-09-16 86 views
0

我有下面的類在我的Droid項目:爲什麼我的自定義渲染器不工作?

using MyProject.Droid; 
using Xamarin.Forms.Platform.Android; 

[assembly: Xamarin.Forms.ExportRenderer(typeof(Android.Widget.Button), typeof(ArrowButtonRenderer))] 
namespace MyProject.Droid 
{ 
    public class ArrowButtonRenderer : Xamarin.Forms.Platform.Android.ButtonRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e) 
     { 
      base.OnElementChanged(e); 
      var btn = this.Control as Android.Widget.Button; 
      btn.SetBackgroundColor(global::Android.Graphics.Color.Green); 
     } 
    } 
} 

我知道,你不需要自定義呈現改變按鈕的顏色,但我只是想嘗試的東西出來:)

乾杯!

編輯:這是關於我如何將按鈕添加的到UI代碼:

MyStackLayout.Children.Add(new Button 
{ 
    Text = "My Button Text" 
}); 

並通過XAML一些按鈕:

<Button x:Name="btnIdk" Text="something" /> 
+1

試着改變這個'typeof(Android.Widget.Button)'到Xamarin表單按鈕,所以'typeof(Xamarin.Forms.Button)' –

+0

沒有工作,按鈕仍然是我的風格/主題的顏色:( – jdstaerk

+0

當你在那裏放置一個斷點時,它是否會被擊中? –

回答

1

廣泛的交談後,看着你的來源我已經看到PCL已經安裝了Xamarin.Forms版本2.3.1.114。

您的Droid項目安裝了版本1.5.x,所以它更老!

現在下一部分會很棘手,您需要更新您的Android Xamarin.Forms包。但是,如果先更新Xamarin.Android.Support。*包,則會顯示錯誤,指出無法更新Xamarin.Forms,因爲找不到匹配的Forms版本。

由於Xamarin.Forms for Android在很大程度上依賴於它們與特定版本鏈接的支持包,但它們並不總是同步。截至目前,Xamarin.Forms版本(2.3.2.127)似乎錯過了相應的Android支持包。所以不要升級到那個版本,升級到與你的PCL 2.3.1.114相同的版本。然後Android軟件包將更新到23.3.0,並且一切都會很好地工作。