Как выделить выбранный элемент, переданный параметром в ListPicker??

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

у меня это в xaml

DataTemplate x:Key="ListPickerED">
    <Grid HorizontalAlignment="Stretch" Width ="420">
<TextBlock
Text="{Binding Company}" 
FontSize="{StaticResource PhoneFontSizeMedium}" 
Grid.Column="0" Grid.ColumnSpan="1" 
VerticalAlignment="Top" Margin ="0, 12, 0, 0"/>


</Grid >
</DataTemplate >
<toolkit:ListPicker x:Name="CompanyListPicker" 
CacheMode="BitmapCache" 
ItemsSource="{Binding AllMyCompanies}"
ItemTemplate="{StaticResource ListPickerED }"
Margin ="9,267,12,26">
</toolkit:ListPicker>"

Список правильно заполнен, с этим проблем нет.

Моя проблема, когда я перехожу на страницу, я хотел бы, чтобы ListPicker выделял значение, переданное навигацией.

Если NavigationContext.QueryString.TryGetValue("BridgeCompany_Param", bridgeCompany_Msg) Then CompanyListPicker.SelectedItem = bridgeCompany_Msg End If

Это не работает.

Любая помощь будет оценена по достоинству.

Спасибо.


person user1187389    schedule 03.02.2012    source источник


Ответы (1)


Через некоторое время я нашел ответ

Сначала я преобразовал коллекцию в список и смог сделать:

CompanyListPicker.SelectedItem = Company_Msg

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

Итак, после еще нескольких попыток, я решил вернуться к сбору, так как у меня не было проблем с внешним ключом.

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

Это может быть не самый красивый код, но он работает.

идея состоит в том, чтобы проанализировать все элементы в коллекции, к ним можно получить доступ с помощью переменной (i), когда значение найдено (Trouve), я сохраняю этот номер индекса и присваиваю его listPicker.selectedIndex.

 If NavigationContext.QueryString.TryGetValue("BridgeCompany_Param", bridgeCompany_Msg) Then
Dim i, Trouve As Integer
i = 0
Trouve = 0
While i < App.ViewModel.AllMyCompanies.Count
If (App.ViewModel.AllMyCompanies.Item(i).Company = bridgeCompany_Msg) Then
Trouve = i
End If
i = i + 1
End While
CompanyListPicker.SelectedIndex = Trouve
End If

надеюсь, что моя помощь кому-то еще, если это не было слишком очевидным для всех ;-)

person user1187389    schedule 10.02.2012