xamarin 表单:如何确保选择器不为 null 或为空?

xamarin forms: how to make sure that a picker is not null or empty?

现在用户可以跳过选择器选择。如何确保用户在转到下一个选择器之前选择了一个选项?例如,如果第二个选择器是空的,那么它不能移动到第三个选择器。

我试过 if else 语句,但我不知道把它放在哪里,也许应该有更好的方法来做?

你可以有这样一个简单的逻辑。在每个选择器中,检测焦点事件,然后检查前一个是否有值/selectedindex 未更改,然后应用您的逻辑/弹出窗口等。

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

};

这是您的 question.There 的样本 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">

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;
  }
}

您应该使用 MVVM 模式和模型绑定。因此,您可以针对模型而不是每个 UI 控件检查验证。 可以在此处找到一个简单的指南:https://www.codeproject.com/Articles/1274851/Xamarin-Forms-Validations-Made-Simple