Как выделить выбранный элемент, переданный параметром в ListPicker ?? - PullRequest
0 голосов
/ 03 февраля 2012

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

У меня есть это в 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 выделил значение, переданное навигацией.

If NavigationContext.QueryString.TryGetValue ("BridgeCompany_Param", bridgeCompany_Msg) затем CompanyListPicker.SelectedItem = bridgeCompany_Msg Конец, если

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

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

Спасибо.

1 Ответ

1 голос
/ 10 февраля 2012

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

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

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

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

...