c# - xamarin 形成清晰的选择器选择
问题描述
我是 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());
}
解决方案
清除选择器选择?
将实例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
}
推荐阅读
- android - 尝试构建 Flutter 时,Mlkit 抛出异常
- c# - WPF 自定义控件不可见 - 找不到主题?
- laravel - 如何正确地将控制器功能保存到两个单独的表中
- npm - 如何使用 Azure Devops 管道增加 npm 包的版本
- python - 在 zip 列表之后,所有 pandas 行的值都相同,为什么?
- angular - 错误未捕获的错误:在应用程序模块中声明时模板解析错误
- woocommerce - Woocommerce - 向其他人发送电子邮件
- javascript - 在 Zapier Code JS 中的 webhook 有效负载后循环
- javafx - 如何修复“工作区中没有安装与此环境严格兼容的 JRE。'?
- vue.js - 显示隐藏 Vuejs 元素