C# Xamarin形成选择器级联
我参与了一个项目,遇到以下情况: 我有一个选择器(下拉菜单),它需要根据第一个选择器中的第一个选定项显示第二个选择器(级联)。值是动态的(来自Sqlite表)。 这是我的密码: XAML //代码隐藏C# Xamarin形成选择器级联,c#,visual-studio,xaml,xamarin,xamarin.forms,C#,Visual Studio,Xaml,Xamarin,Xamarin.forms,我参与了一个项目,遇到以下情况: 我有一个选择器(下拉菜单),它需要根据第一个选择器中的第一个选定项显示第二个选择器(级联)。值是动态的(来自Sqlite表)。 这是我的密码: XAML //代码隐藏 private void OnModeChosen(object sender, EventArgs e) { Picker modePicker = (Picker)sender; var mode = picker.SelectedIndex; picker2.
private void OnModeChosen(object sender, EventArgs e)
{
Picker modePicker = (Picker)sender;
var mode = picker.SelectedIndex;
picker2.Items.Clear();
switch(mode)
{
//This is the part I would like dynamic
}
}
我希望处理程序“onmodeselected”能够动态工作(从选择器1中选择的任何值都将显示选择器2的相应值)。顺便说一句,我会很感激任何其他方法,因为我有兴趣得到预期的结果。
谢谢你们的支持。
我为此工作了几个小时,在互联网上找不到任何值得的东西。所以我在我的项目中就是这样解决的:
private void OnModeChosen(object sender, EventArgs e)
{
Country country = ((Country)(picker.SelectedItem)) // get the country object from the picker
picker2.ItemsSource = GetRegions(country.CountryId ) // call the function to get the regions for that country
picker2.ItemDisplayBinding = New Binding("RegionsName")
picker2.SelectedIndex = 0 // not sure why I did this, I think to make sure an item was selected
stackpicker2.IsVisible = true // make the stack layout visible with the 2nd picker
picker2.IsEnabled = true;
}
希望这有帮助我解决了一个类似的问题,我的一个问题是,你必须先挑选一栋房子,然后它会让另一个挑选者装满公寓,这就是你想要的吗?嗨,Jordy,我无法实现你的答案,这是OnModeSelected的全部代码吗?我还在第二行,我调用了一个函数GetRegions,这个你必须自己做。在这里,您传递国家的idd,并使用该id从您的sqllite数据库中获取地区,如果不是,您坚持的是什么?ps刚刚注意到您禁用了您的选择器2别忘了启用它,我将其添加到ym代码抱歉Jordy,您的代码对我不起作用,仍然被卡住。@JordyDieltjens我是说没有在SelectedIndexChanged事件中手动设置东西。即在Xaml中使用绑定。在代码隐藏期间动态地在事件中添加绑定,对于一个简单的级联选择器解决方案来说,这似乎是一个滑坡。顺便说一句:我确实知道怎么做。以及通过visibilityConverter绑定绑定二级/级联选择器的可见性。
private void OnModeChosen(object sender, EventArgs e)
{
Picker modePicker = (Picker)sender;
var mode = picker.SelectedIndex;
picker2.Items.Clear();
switch(mode)
{
//This is the part I would like dynamic
}
}
private void OnModeChosen(object sender, EventArgs e)
{
Country country = ((Country)(picker.SelectedItem)) // get the country object from the picker
picker2.ItemsSource = GetRegions(country.CountryId ) // call the function to get the regions for that country
picker2.ItemDisplayBinding = New Binding("RegionsName")
picker2.SelectedIndex = 0 // not sure why I did this, I think to make sure an item was selected
stackpicker2.IsVisible = true // make the stack layout visible with the 2nd picker
picker2.IsEnabled = true;
}