xamarin формы: как убедиться, что сборщик не является нулевым или пустым? - PullRequest
0 голосов
/ 11 июня 2019

Прямо сейчас пользователь может пропустить выбор выбора.Как убедиться, что пользователь выбирает выбор, прежде чем перейти к следующему сборщику?Например, если 2-й сборщик пуст, он не может перейти к 3-му.*

Ответы [ 3 ]

1 голос
/ 12 июня 2019

Вот пример для вашего вопроса. В Xaml есть

:
<Picker x:Name="PickerOne" Title="Select First" TitleColor="Red">
<Picker x:Name="PickerTwo" Title="Select Second" TitleColor="Green" IsEnabled = "False">
<Picker x:Name="PickerThree" Title="Select Three" TitleColor="Blue" IsEnabled = "False">

In ContentPage , настройка ItemSource:

var monkeyList = new List<string>();
monkeyList.Add("Baboon");
monkeyList.Add("Capuchin Monkey");
monkeyList.Add("Blue Monkey");
monkeyList.Add("Squirrel Monkey");
monkeyList.Add("Golden Lion Tamarin");
monkeyList.Add("Howler Monkey");
monkeyList.Add("Japanese Macaque");

PickerOne.ItemsSource = monkeyList;
PickerTwo.ItemsSource = monkeyList;
PickerThree.ItemsSource = monkeyList;

и добавление SelectedIndexChanged метод:

PickerOne.SelectedIndexChanged += PickerOne_SelectedIndexChanged;
PickerTwo.SelectedIndexChanged += PickerTwo_SelectedIndexChanged;


void PickerOne_SelectedIndexChanged(object sender, EventArgs e)
{
  var picker = (Picker)sender;
  int selectedIndex = picker.SelectedIndex;

  if (selectedIndex != -1)
  {
    PickerTwo.IsEnabled = true;
  }else{
    PickerTwo.IsEnabled = false;
  }
}

void PickerTwo_SelectedIndexChanged(object sender, EventArgs e)
{
  var picker = (Picker)sender;
  int selectedIndex = picker.SelectedIndex;

  if (selectedIndex != -1)
  {
    PickerThree.IsEnabled = true;
  }else{
    PickerThree.IsEnabled = false;
  }
}
1 голос
/ 12 июня 2019

Вы должны использовать шаблон MVVM и привязку модели. Таким образом, вы можете проверить валидацию по модели, а не по каждому элементу управления пользовательского интерфейса. Простое руководство можно найти здесь: https://www.codeproject.com/Articles/1274851/Xamarin-Forms-Validations-Made-Simple

1 голос
/ 11 июня 2019

У вас может быть такая простая логика.В каждом сборщике определите сфокусированное событие, а затем проверьте, не изменилось ли предыдущее значение / selectedindex, затем примените свою логику / всплывающие окна и т. Д.

YourPicker2.Focused += (object sender, EventArgs e) => 
{
    if(YourPicker1.SelectedIndex==-1)
    {
        DisplayAlert("Please fill the XXX picker");
    }

};
...