Как мне получить доступ к данным, которые пользователь выбрал из средства выбора в xamarin forms? Я хочу использовать это в операторах переключения

#c# #xamarin #xamarin.forms #picker

#c# #xamarin #xamarin.forms #средство выбора

Вопрос:

Я не знаю, как получить данные, которые пользователь выбрал из средства выбора.

в конфликте, какой из них использовать selectedindexchange, чтобы он сообщал мне, когда пользователь меняет свое мнение, или selecteditem, который сообщает мне, какой из них выбрал пользователь.

 public MainPage()
 {
        InitializeComponent();
        drainquatity();
 }
void drainquatity()
{
        drain.Items.Add("1");
        drain.Items.Add("2");
        drain.Items.Add("3");
        drain.Items.Add("4");
        drain.Items.Add("5");
        drain.Items.Add("6");
        drain.Items.Add("7");
        drain.Items.Add("8");
        drain.Items.Add("9");
        drain.Items.Add("10");

        return;
 }

<Picker x:Name="drain" Title="Drain #" Margin="190,-30,50,0" 
"SelectedItem="drainx" />  
  

я хочу иметь возможность знать, что выбрал пользователь, использовать эти данные для прохождения через оператор switch.
drain #: выберите от 1 до 10
пользователь выбирает
switch (drainx)
пример: 1
затем вызовите эту функцию, чтобы отобразить только 1 запись.
пример: 2
вызовите эту функцию для отображения 2 записей

и т.д…

Ответ №1:

все это объясняется в документах по выбору

 // get the index/position of the selected item
// -1 means no selection
int ndx = drain.SelectedIndex;

// get the value of the selected item
// null means no selection
string item = (string)drain.SelectedItem;

// set an event handler to fire when an item is selected
<Picker x:Name="drain" Title="Drain #" Margin="190,-30,50,0" 
SelectedIndexChanged="ItemSelected" />  

protected void ItemSelected(object sender, EventArgs args)
{
}
  

Комментарии:

1. он выдает исключение system.nullreferenceexception было вызвано. Ссылка на объект не установлена для экземпляра объекта, когда я использовал это: public MainPage() { // var drainxy = drain. Элементы [слив. SelectedIndex]; string item = (строка)drain. SelectedItem; InitializeComponent(); drainquatity(); switch (item) { case «1»: DisplayAlert (item, «switch», «K»); break; по умолчанию: break; }

2. // это срабатывает, когда пользователь изменяет или выбирает новую выборку void ItemSelected(отправитель объекта, система. EventArgs e) { //чтобы получить значение, выбранное пользователем, var drainx = drain. Элементы [слив. SelectedIndex]; DisplayAlert(drainx, «выбранное значение», «OK»); } // это предупреждение работает

3. во-первых, «исключение» не помогает. Какое конкретное исключение и какая строка его вызывает? Во-вторых, если вы делаете это в конструкторе страницы, тогда SelectedItem будет равен null, потому что пользователь еще ничего не сделал. Для этого существует обработчик событий SelectedIndexChanged.

Ответ №2:

 <Picker x:Name="drain" Title="Drain #" SelectedIndexChanged="Drain_SelectedIndexChanged"/>  


public void Drain_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (drain.SelectedIndex == -1) 
            {
                //Message
            } 
            else
            {                
                 string item = (string)drain.SelectedItem;
                DisplayAlert (selectedItem, "OK", "OK");
            }
        }