在默认情况下,我将我的按钮颜色设置为 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;
}
}
你的代码有一个逻辑缺陷。你总是将 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;
}
}
与其强迫布尔值为真,不如将其反转。意思是;当它为真时,它将变成假,当假时,它将变成真。
所以你要写成这样:
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;
}
}