Как получить выбранный элемент из списка в Windows Phone 8?

Я использую этот код для создания списка в Windows Phone.

<StackPanel Height="148" Margin="0,100,0,0">
   <toolkit:ListPicker Grid.Row="0" FontFamily="Segoe WP Semibold" Height="176" x:Name="Additional_Time" ItemTemplate="{StaticResource PickerItemTemplate}" FullModeItemTemplate="{StaticResource PickerFullModeItemTemplate}" FullModeHeader="Cities" SelectedIndex="0" CacheMode="BitmapCache" Header="Choose Exit Time" FontSize="30" SelectionChanged="Additional_Time_SelectionChanged"/>
</StackPanel>

и использовать эти ресурсы сетки

<Grid.Resources>
        <DataTemplate x:Name="PickerItemTemplate">
            <StackPanel Orientation="Horizontal">
                <Border Background="LightGreen" Width="34" Height="34">
                    <TextBlock Text="{Binding Country}" FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </Border>
                <TextBlock Text="{Binding Name}" Margin="12 0 0 0"/>
            </StackPanel>
        </DataTemplate>
        <DataTemplate x:Name="PickerFullModeItemTemplate">
            <StackPanel Orientation="Horizontal" Margin="16 21 0 20">
                <TextBlock Text="{Binding Name}" Margin="16 0 0 0" FontSize="43" FontFamily="{StaticResource PhoneFontFamilyLight}"/>

                <TextBlock Text="{Binding Language}" Foreground="Green"/>
            </StackPanel>
        </DataTemplate>
    </Grid.Resources>

Ниже код для вставки элемента в список

List<Cities> source = new List<Cities>();
        //List<Items> source = new List<Items>();
        source.Add(new Cities() { Name = " 00 : 30 " });
        source.Add(new Cities() { Name = " 01 : 00 " });
        source.Add(new Cities() { Name = " 01 : 30 " });
        source.Add(new Cities() { Name = " 02 : 00 " });
        source.Add(new Cities() { Name = " 02 : 30 " });
        source.Add(new Cities() { Name = " 03 : 00 " });
        source.Add(new Cities() { Name = " 03 : 30 " });
        source.Add(new Cities() { Name = " 04 : 00 " });
        source.Add(new Cities() { Name = " 04 : 30 " });
        source.Add(new Cities() { Name = " 05 : 00 " });
        source.Add(new Cities() { Name = " 05 : 30 " });
        source.Add(new Cities() { Name = " 06 : 00 " });
        source.Add(new Cities() { Name = " 06 : 30 " });
        source.Add(new Cities() { Name = " 07 : 00 " });

        this.Additional_Time.ItemsSource = source;

Мой вопрос заключался в том, как получить выбранный элемент из этого списка.

Я пробовал другой код, чтобы получить выбранный элемент из этого списка, это исключение с нулевым значением или недопустимое исключение приведения.

private void Additional_Time_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var selectedItem = (sender as ListPicker).SelectedItem;
        int selindex = Additional_Time.SelectedIndex;// lp.SelectedIndex; //just for testing
        MessageBox.Show(selindex.ToString()); //just for testing
        MessageBox.Show((Additional_Time.SelectedItem as ListPicker).ToString());
    }

Пожалуйста, помогите мне решить эту проблему.

Заранее спасибо.


person selvam    schedule 01.07.2013    source источник


Ответы (1)


В вашем коде в последней строке вы пытаетесь привести выбранный элемент к типу ListPicker, но он должен быть типа Cities:

MessageBox.Show((Additional_Time.SelectedItem as Cities).Name.ToString());
person anderZubi    schedule 01.07.2013
comment
Hai anderZubi, это не работает... Я делаю простое исправление в вашем коде, большое спасибо.... ЭТО MessageBox.Show((Additional_Time.SelectedItem as Cities).Name.ToString()); - person selvam; 01.07.2013
comment
Хорошо, я изменил ответ. - person anderZubi; 01.07.2013