Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin形成选择器级联_C#_Visual Studio_Xaml_Xamarin_Xamarin.forms - Fatal编程技术网

C# Xamarin形成选择器级联

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.

我参与了一个项目,遇到以下情况: 我有一个选择器(下拉菜单),它需要根据第一个选择器中的第一个选定项显示第二个选择器(级联)。值是动态的(来自Sqlite表)。 这是我的密码:

XAML

//代码隐藏

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