xamarin формирует четкий выбор сборщика - PullRequest
0 голосов
/ 15 мая 2018

Я новичок в Xamarin вместе с c # и xaml, так что это был довольно полезный опыт. Я пытаюсь сделать то, что я думал, было бы простой задачей (отменить выбор сборщика), но это оказалось довольно сложной задачей.

Желаемая функциональность: страница с выбором средства выбора, сделать выбор, сохранить выборку в переменной, перейти на другую страницу и затем очистить сделанный выбор, чтобы при возврате на первую страницу выбор не делался.

Я пытался использовать picker.Items.Clear () и установить SelectedIndex = -1, но я последовательно получил исключение OutOfRangeException. Я попробовал этот пост, но не смог заставить работать какие-либо опции: Как очистить пикар, если он выбран в формах xamarin?

Я не хочу устанавливать средство выбора на первую опцию, я хочу, чтобы он был пустым, чтобы отображался заголовок средства выбора, как он работает при первом запуске, но когда я делаю выбор и перехожу на следующую страницу , когда я возвращаюсь, мой первоначальный выбор все еще сделан.

Надеюсь, все имеет смысл, чего я пытаюсь достичь. Ниже приведен мой основной код, любая помощь или направление будут с благодарностью.

MainPage.xaml:

<StackLayout>
        <Label Text="Select an option:" 
            VerticalOptions="Start" 
            HorizontalOptions="Start" 
        />

        <Picker x:Name="OptionSelect"
            Title="Click to Select"
            SelectedIndexChanged="OptionSelect_OnSelectedIndexChanged"
        />      
</StackLayout>

MainPage.xaml.cs:

    public MainPage()
    {
        InitializeComponent();

        OptionSelect.Items.Add("Option 1");
        OptionSelect.Items.Add("Option 2");
        OptionSelect.Items.Add("Option 3");
    }

    public void OptionSelect_OnSelectedIndexChanged(object sender, EventArgs e)
    {
        var option = OptionSelect.Items[OptionSelect.SelectedIndex];

        //OptionSelect.Items.Clear();
        //OptionSelect.Items.Add("Option 1");
        //OptionSelect.Items.Add("Option 2");
        //OptionSelect.Items.Add("Option 3");

        //OptionSelect.SelectedIndex = -1;

        Navigation.PushAsync(new Page1());
    }

1 Ответ

0 голосов
/ 15 мая 2018

Очистить выбор выбора?

Установите для свойства SelectedItem в экземпляре Picker значение null.

Таким образом, используя пример кода и не допуская повторного запуска события OnSelectedIndexChanged при его назначении null:

public void OptionSelect_OnSelectedIndexChanged(object sender, EventArgs e)
{
    var option = OptionSelect.SelectedItem;
    // Prevent setting the SelectedItem from refiring event
    OptionSelect.SelectedIndexChanged -= OptionSelect_OnSelectedIndexChanged;
    OptionSelect.SelectedItem = null;
    OptionSelect.SelectedIndexChanged += OptionSelect_OnSelectedIndexChanged;
    // Do something with option object
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...