Проблема привязки Listpicker WP7 - PullRequest
2 голосов
/ 17 ноября 2011

У меня возникла проблема при попытке привязать созданный мной объект к средству выбора списка.Я успешно использовал средство выбора списков со строками и целыми числами, но у меня возникают проблемы при попытке использовать мой собственный класс / объект.

Вот XML (у меня есть два средства выбора списков, один работает, а другой нет)

                            <toolkit:ListPicker 
                            x:Name="CountryListPicker" 
                            Margin="0,2,0,10" Width="458" 
                            BorderThickness="3" FullModeHeader="Country"
                            CacheMode="BitmapCache">
                            <toolkit:ListPicker.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <Border Background="LightBlue" Width="34" Height="34">
                                            <TextBlock Text="{Binding _code}" FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                                        </Border>
                                        <TextBlock Text="{Binding _name}" Margin="12 0 0 0"/>
                                    </StackPanel>
                                </DataTemplate>
                            </toolkit:ListPicker.ItemTemplate>
                            <toolkit:ListPicker.FullModeItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal" Margin="0 21 0 20">
                                        <TextBlock Text="{Binding _name}" Margin="16 0 0 0" FontSize="43" FontFamily="{StaticResource PhoneFontFamilyLight}"/>
                                    </StackPanel>
                                </DataTemplate>
                            </toolkit:ListPicker.FullModeItemTemplate>
                        </toolkit:ListPicker>

                        <toolkit:ListPicker
                            x:Name="testPicker"
                            Header="Accent color" 
                            FullModeHeader="ACCENTS" 
                            CacheMode="BitmapCache">
                            <toolkit:ListPicker.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <TextBlock Text="{Binding}" Margin="12 0 0 0"/>
                                    </StackPanel>
                                </DataTemplate>
                            </toolkit:ListPicker.ItemTemplate>
                            <toolkit:ListPicker.FullModeItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal" Margin="0 21 0 20">
                                        <TextBlock Text="{Binding}"
                                   Margin="16 0 0 0"
                                   FontSize="43"
                                   FontFamily="{StaticResource PhoneFontFamilyLight}"/>
                                    </StackPanel>
                                </DataTemplate>
                            </toolkit:ListPicker.FullModeItemTemplate>
                        </toolkit:ListPicker>`

Первый инструмент выбора списка - это мой новый объект, привязывающий один, а второй - привязку строки.

Вот код:

        ObservableCollection<Country> countries = new ObservableCollection<Country>();
        countries.Add(new Country { _code = "US", _name = "United States1"});
        countries.Add(new Country { _code = "US", _name = "United States2" });
        countries.Add(new Country { _code = "US", _name = "United States3" });
        countries.Add(new Country { _code = "US", _name = "United States4" });
        countries.Add(new Country { _code = "US", _name = "United States5" });
        countries.Add(new Country { _code = "US", _name = "United States6" });
        this.CountryListPicker.ItemsSource = new ReadOnlyCollection<Country>(countries);

        ObservableCollection<string> _accentColors = new ObservableCollection<string>();
        _accentColors.Add("Blue");
        _accentColors.Add("Blue2");
        _accentColors.Add("Blue3");
        _accentColors.Add("Blue4");
        _accentColors.Add("Blue5");
        _accentColors.Add("Blue6");
        _accentColors.Add("Blue7");
        this.testPicker.ItemsSource = new ReadOnlyCollection<string>(_accentColors);

2-й список выбора в порядке, и я думаю, что это потому, что он содержит строки.

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

У кого-нибудь есть идеи?Нужно ли мне больше объяснять?

1 Ответ

2 голосов
/ 17 ноября 2011

Я понял это самостоятельно.У меня была функция Loaded, в которой инициализировался список выбора.Похоже, что Loaded загружается, когда средство выбора списков возвращается из полноэкранного представления, которое, в свою очередь, сбрасывает selectedIndex.Исправить было легко, просто переместите создание списков, а также настройку itemSource из функции Loaded в конструктор.

...