我正在编写一个Xamarin表单应用程序,用于检查用户是否在特定的地理位置。当用户走进某个区域时,XAML
开关会从关闭位置切换到打开位置。
farmSwitch.toggled = true;
这会调用此函数
farmSwitch.Toggled += (object sender, ToggledEventArgs e) => {
manualOnFarm = true;
Console.WriteLine("Switch.Toggled event sent");
changeOnFarmStatus(e);
};
我还需要用户手动点击切换功能的功能,需要区别于代码自动切换farmSwitch
原因是我有一个布尔值,只有当用户手动点击farmSwitch
时才应该为真,并且当自动切换开关时应该为假
我有什么选择?理想情况下,当用户手动点击farmSwitch
时,我可以调用farSwtich.clicked()函数,但没有这样的运气
答案 0 :(得分:2)
我不知道如何通过在您编写的代码中使用某种标记来区分这一点,以便以编程方式切换开关?
所以你以编程方式调用它,但你也设置了一个布尔标记来说这是一个编程变化:
private bool HasBeenProgrammaticallyToggled = false;
public void ThisIsAProgrammaticToggle()
{
HasBeenProgrammaticallyToggled = true;
farmSwitch.toggled = true;
}
并在你的小切换事件中做:
farmSwitch.Toggled += (object sender, ToggledEventArgs e) => {
if(HasBeenProgrammaticallyToggled)
{
//This has been toggled programmatically, so reset our bool
HasBeenProgrammaticallyToggled = false;
}
else
{
// I am assuming this is what you use to determine a manual toggle?
manualOnFarm = true;
}
Console.WriteLine("Switch.Toggled event sent");
changeOnFarmStatus(e);
};
这不会起作用吗?
答案 1 :(得分:2)
使用@ digitalsa1nt的建议或使用" - ="手动切换之前的方法并使用" + ="再次。