none
关于LIstPicker的疑惑 RRS feed

  • 问题

  • 现在有个ListPicker

    绑定了一个string的list,里面有两个元素:

    AAA

    BBB

    我想在下面的一个输入框中假如输入了“BBB”的时候,上面的ListPicker的选中项也自动的显示list中有且和输入相同的string,此例中即为“BBB”.

    该如何实现呢?我尝试了一下没有发现解决办法,求教

    2012年3月26日 6:17

答案

  • 你好,

    你可以尝试下面的代码:

            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <toolkit:ListPicker Height="100" HorizontalAlignment="Left" Margin="10,10,0,0" Name="listPicker1" VerticalAlignment="Top" Width="200" />
                <TextBox Height="72" HorizontalAlignment="Left" Margin="6,203,0,0" Name="textBox1" Text="" VerticalAlignment="Top" Width="200" TextChanged="textBox1_TextChanged" />
            </Grid>
    public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            private List<string> strList;
            public MainPage()
            {
                InitializeComponent();
                strList = new List<string>() { "AAA", "BBB" };
                listPicker1.ItemsSource = strList;
            }
     
            private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
            {
                int i = -1;
                foreach (string str in strList)
                {
                    i++;
                    if (str.Equals(textBox1.Text))
                    {
                        listPicker1.SelectedIndex = i;
                        break;
                    }
                }
            }
        }
    • 已标记为答案 ZeptoLee 2012年4月1日 1:33
    2012年3月27日 3:17

全部回复

  • 我觉得应该可以在离开TextBox的焦点时,获取TextBox的值,遍历LisPicker中选项值,

    进行匹配。如果匹配成功,然后设置LisPicker的选中项。

    2012年3月27日 2:48
  • 你好,

    你可以尝试下面的代码:

            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <toolkit:ListPicker Height="100" HorizontalAlignment="Left" Margin="10,10,0,0" Name="listPicker1" VerticalAlignment="Top" Width="200" />
                <TextBox Height="72" HorizontalAlignment="Left" Margin="6,203,0,0" Name="textBox1" Text="" VerticalAlignment="Top" Width="200" TextChanged="textBox1_TextChanged" />
            </Grid>
    public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            private List<string> strList;
            public MainPage()
            {
                InitializeComponent();
                strList = new List<string>() { "AAA", "BBB" };
                listPicker1.ItemsSource = strList;
            }
     
            private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
            {
                int i = -1;
                foreach (string str in strList)
                {
                    i++;
                    if (str.Equals(textBox1.Text))
                    {
                        listPicker1.SelectedIndex = i;
                        break;
                    }
                }
            }
        }
    • 已标记为答案 ZeptoLee 2012年4月1日 1:33
    2012年3月27日 3:17