拨动一个开关即可保存信息

时间:2019-01-14 09:57:35

标签: c# xamarin xamarin.forms

如果两个开关中的任何一个被切换,我都试图显示一个显示警报。

这是我的if语句:

 if(!SwitchOne.IsToggled || !SwitchTwo.IsToggled)
        {
            await DisplayAlert("Cannot save", "Enter info.", "Ok");
        }

我希望在切换1个或两个开关时保存信息。但是,它似乎并不在乎||。在if语句中。当我同时切换两个开关时,我可以保存页面,并且DisplayAlert不会显示= great。当我仅切换一个开关时,将显示DisplayAlert。我不知道为什么,因为我有||在if语句中。

我不希望在切换任何开关时显示DisplayAlert。 感谢所有我能得到的帮助!

4 个答案:

答案 0 :(得分:1)

对于您的情况,您需要使用&&

if(!SwitchOne.IsToggled && !SwitchTwo.IsToggled)
        {
            await DisplayAlert("Cannot save", "Enter info.", "Ok");
        }

现在,仅当两个开关均未切换时,它才会显示警报。如果它们中的任何一个被切换,则警报不会立即显示。

 switch1 == toggled | switch2 == toglled
        true        |       true            =>      Do not show alert
        true        |       false           =>      Do not show alert
        false       |       true            =>      Do not show alert
        false       |       false           =>      show alert

答案 1 :(得分:0)

您正在检查开关是否已关闭,因此很明显,如果只有一个开关处于关闭状态,则会显示该消息,如果两个开关都不处于关闭状态,则不会...您应该:

if(SwitchOne.IsToggled || SwitchTwo.IsToggled)
    {
        await DisplayAlert("Cannot save", "Enter info.", "Ok");
    }

答案 2 :(得分:0)

您可以

if (!SwitchOne.IsToggled && !SwitchTwo.IsToggled)

如果仅切换一个开关(例如SwitchOne),它将评估为:

if (!true && !false) => if (false & true) => if (false)

答案 3 :(得分:0)

如果您反转了一切,则可能更容易阅读,因为现在您正在测试否定响应的否定条件(如果未切换第一个开关而未切换第二个开关,那么我们将无法保存),有时可能会使阅读混乱。

这可能更具可读性:

if (SwitchOne.IsToggled || SwitchTwo.IsToggled)
{
    // At least one switch is toggled - we can save! 
}
else
{
    await DisplayAlert("Cannot save", "Enter info.", "Ok");
}