Я пытаюсь разработать приложение, используя Xamarin.Forms. В определенный момент я пытаюсь иметь несколько переключателей, которые сгруппированы. Это означает, что когда один переключатель переключается, каждый второй переключатель должен быть выключен, и в то же время всегда должен быть хотя бы один переключатель. Это означает, что нажатие на переключатель, который уже переключен, не должно ничего менять. T
Теперь моя проблема заключается в том, что событие Xamarin.forms Toggled для переключателей может быть запущено из пользовательского интерфейса, но также запускается программно. Я думал, что нашел способ обойти эту проблему, но все же выполнил: -Если переключатель включен, выключите все остальные и сделайте что-нибудь для приложения. - иначе, если выключатель был выключен, проверьте, есть ли другие, которые включены. Если нет, включите переключатель снова. Если да, ничего не делать.
Пример кода для двух коммутаторов может быть следующим:
private void OnFirstToggled(object sender, EventArgs args)
{
if(FirstSwitch.isToggled)
{
//Application stuff.
SecondSwitch.isToggled = false;
}
else if (!SecondSwitch.isToggled)
{
FirstSwitch.isToggled = true;
}
}
private void OnSecondToggled(object sender, EventArgs args)
{
if(SecondSwitch.isToggled)
{
//Application stuff.
FirstSwitch.isToggled = false;
}
else if (!FirstSwitch.isToggled)
{
SecondSwitch.isToggled = true;
}
}
Это решение приводит к бесконечному циклу при касании уже переключенного переключателя. Фактически, свойство isToggled переключателя чередуется между истиной и ложью бесконечно. Однако при отладке другое событие никогда не запускается (или, по крайней мере, мой отладчик его не видит). Вот почему я не понимаю, где свойство isToggled изменяется после первого нажатия.
Я знаю, что это, вероятно, очень простая проблема, но я не могу найти решение где-нибудь в Интернете. Кто-нибудь может увидеть проблему или порекомендовать лучший общий способ ее реализации?