C# 将另一个按钮的背景放在按钮背景上Xamarin

C# 将另一个按钮的背景放在按钮背景上Xamarin,c#,android,xamarin,xamarin.ios,xamarin.android,C#,Android,Xamarin,Xamarin.ios,Xamarin.android,我想做些什么 如果单击按钮1,则主按钮背景图像=按钮1.背景图像 如果单击按钮2,则主按钮背景图像=按钮2.背景图像 我想让我的应用程序有大约80个图像按钮和字符。如果我学会了一种方法,我的工作一定会更轻松 我的电脑 layout1.axml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and

我想做些什么

如果单击按钮1,则主按钮背景图像=按钮1.背景图像

如果单击按钮2,则主按钮背景图像=按钮2.背景图像

我想让我的应用程序有大约80个图像按钮和字符。如果我学会了一种方法,我的工作一定会更轻松

我的电脑

layout1.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
    <Button
        android:text="Button 1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn1"
        android:background="@drawable/btn_yellow" />
    <Button
        android:text="Button 2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn2"
        android:background="@drawable/btn_green" />
    <Button
        android:text="Main Button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btnMain" />
</LinearLayout>

您不需要多个lambda,可以使用setBackgroundDrawable/getBackgroundDrawable,而不是使用SetBackgroundResource,它在Xamarin中备份到属性后台:

Button btnMain;

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);
    SetContentView(Resource.Layout.layout1);

    Button btn1 = (Button)FindViewById(Resource.Id.btn1);
    Button btn2 = (Button)FindViewById(Resource.Id.btn2);
    btnMain = (Button)FindViewById(Resource.Id.btnMain);

    btn1.Click += ChangeBackground;
    btn2.Click += ChangeBackground;
}

private void ChangeBackground(object sender, EventArgs e)
{
    var btn = sender as Button;
    btnMain.Background = btn.Background;
}

完美的答案。我完全想要这种方法。“谢谢你!”马穆特贝迪尔,如果你接受这个答案,为什么不呢?
Button btnMain;

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);
    SetContentView(Resource.Layout.layout1);

    Button btn1 = (Button)FindViewById(Resource.Id.btn1);
    Button btn2 = (Button)FindViewById(Resource.Id.btn2);
    btnMain = (Button)FindViewById(Resource.Id.btnMain);

    btn1.Click += ChangeBackground;
    btn2.Click += ChangeBackground;
}

private void ChangeBackground(object sender, EventArgs e)
{
    var btn = sender as Button;
    btnMain.Background = btn.Background;
}