2014-08-31 113 views
2

我想获得第一个listpicker的值并基于它的值过滤第二个列表选择器......任何人都可以帮助我如何实现这一目标?Wp8 -list picker -filter基于第一个列表选择器值的第二个列表选择器值

+0

如果答案解决了您的问题,请将其标记为正确。如果不让我们知道,那么我们可以进一步帮助。 – 2014-09-02 06:06:09

+0

你可否详细说明编程式给出的第二个列表项目?问题是我需要有5到10个项目,我应该为第二个列表输入......这是根据第一个选项排序的。 – SHiBiN 2014-10-21 18:34:38

回答

2

试试这个..

<StackPanel> 
    <toolkit:ListPicker Name="lstPicker1" SelectionChanged="lstPicker1_SelectionChanged"> 
     <sys:String>Option 1</sys:String> 
     <sys:String>Option 2</sys:String> 
     <sys:String>Option 3</sys:String> 
     <sys:String>Option 4</sys:String> 
     <sys:String>Option 5</sys:String> 
    </toolkit:ListPicker> 

    <toolkit:ListPicker Name="lstPicker2"> 
    </toolkit:ListPicker> 
</StackPanel> 

这里作为第一ListPicker(lstPicker1),你也可以从代码中设置的项目动态以及。

我已经创建了此方法来动态创建第二个ListPicker(lstPicker2)的内容。这很简单。使用这样的事情您使用

private List<string> CreateList(int opt) 
{ 
    List<string> strLst = new List<string>(); 
    for (int i = 1; i < 6; i++) 
    { 
     string str = string.Format("Sub-option {0}.{1}", opt, i); 
     strLst.Add(str); 
    } 
    return strLst; 
} 

然后使用SlectionChanged事件从lstPicker1设置项目在第二ListPicker

private void lstPicker1_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (lstPicker1 != null) 
    { 
     switch (lstPicker1.SelectedIndex) 
     { 
      case 0: 
       lstPicker2.ItemsSource = CreateList(1); 
       break; 
      case 1: 
       lstPicker2.ItemsSource = CreateList(2); 
       break; 
      case 2: 
       lstPicker2.ItemsSource = CreateList(3); 
       break; 
      case 3: 
       lstPicker2.ItemsSource = CreateList(4); 
       break; 
      case 4: 
       lstPicker2.ItemsSource = CreateList(5); 
       break; 
      default: 
       break; 
     } 
    } 
} 

在这里,在SelectionChanged方法如果条件需要,因此当页面加载时不会抛出Exception

相关问题