在点击事件中改变按钮的颜色

问题描述 投票:0回答:1

在默认情况下,我将我的按钮颜色设置为 Gainsboro在点击按钮时,我将其设置为橙色。我遇到的问题是如何在同一个按钮点击事件中恢复颜色。我怎样才能实现这个目标?我是想做一个 "开关 "类的按钮,请问这种方法好吗?请问这种方法好吗?因为我还需要对按钮是否为橙色的条件进行编码。

xaml

<Button x:Name="btnWIP" Text="non WIP" BackgroundColor="Gainsboro"/>

编码

public bool isWIP = false;
private void btnWIP_Clicked(object sender, EventArgs e)
{
    isWIP = true;
    if(isWIP == true)
    {
        btnWIP.Text = "is WIP";
        btnWIP.BackgroundColor = Color.FromHex("#FFBE57");
    }
    else
    {
        btnWIP.BackgroundColor = Color.Gainsboro;
    }
}
c# xamarin xamarin.forms
1个回答
0
投票

你的代码有一个逻辑缺陷。你总是将 isWIP = true 在检查之前,这个条件将永远是真的。

你可以这样改变它。

public bool isWIP = false;
private void btnWIP_Clicked(object sender, EventArgs e)
{
    isWiP = !isWIP; // that way, you will change the value of isWIP on each click to true/false
    if(isWIP == true)
    {
        btnWIP.Text = "is WIP";
        btnWIP.BackgroundColor = Color.FromHex("#FFBE57");
    }
    else
    {
        btnWIP.BackgroundColor = Color.Gainsboro;
    }
}

0
投票

与其强迫布尔值为真,不如将其反转。意思是;当它为真时,它将变成假,当假时,它将变成真。

所以你要写成这样:

if(isWIP == true)
    isWIP = false;
else
    isWIP = true;

你可以把这个写得更短一些

isWIP = !isWIP;

public bool isWIP = false;
private void btnWIP_Clicked(object sender, EventArgs e)
{
    // invert the boolean
    isWIP = !isWIP;

    if(isWIP == true)
    {
        btnWIP.Text = "is WIP";
        btnWIP.BackgroundColor = Color.FromHex("#FFBE57");
    }
    else
    {
        btnWIP.BackgroundColor = Color.Gainsboro;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.