WP7用ListPickerのselectionchangedイベントで特定の項目を選択しようとしています。私はListPickerを正しく実装しており、ListPickerにテキスト配列をバインドしていると思いますが、ListPickerで特定の項目を選択しようとすると問題が発生します。私のListPickerは私のSettingsPage.xamlにあり、そこで使用するために、私のMainPage.xamlオブジェクトに特定の文字列を渡したいと思います。私のコードはlistpicker selectionchanged not working
SettingsPage.xaml
<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Name="SearchProviderItemTemplate">
<TextBlock Text="{Binding SearchProvider}" />
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
<!--Pivot Control-->
<controls:Pivot Title="QUEST">
<!--Pivot item one-->
<controls:PivotItem Header="browser">
<ScrollViewer x:Name="ContentPanel_Browser" Margin="12,0,12,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="70"/>
<RowDefinition Height="70"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
...
<!-- Search Provider -->
<TextBlock Text="Search provider" Margin="12,7,12,8"
Grid.Row="3" VerticalAlignment="Bottom"
Foreground="{StaticResource PhoneSubtleBrush}"/>
<toolkit:ListPicker x:Name="SearchProviderListPicker" Grid.Row="4" Grid.ColumnSpan="2" Margin="12,0,12,0"
ItemTemplate="{Binding SearchProviderItemTemplate}"
SelectionChanged="SearchProviderListPicker_SelectionChanged" />
</Grid>
</ScrollViewer>
<!--<Grid/>-->
</controls:PivotItem>
SettingsPage.xaml.cs
string searchProvider;
String[] SearchProvider =
{
"Google",
"Bing",
"Yahoo",
"Ask",
"AOL"
};
private void SearchProviderListPicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(e.AddedItems.Equals("Google"))
{
searchProvider = "http://www.google.com/search?q=";
}
else if(e.AddedItems.Equals("Bing"))
{
searchProvider = "http://www.bing.com/search?q=";
}
//if (SearchProvider.Equals("Google"))
//{
// searchProvider = "http://www.google.com/search?q=";
//}
//else if(SearchProvider.Equals("Bing"))
//{
// searchProvider = "http://www.bing.com/search?q=";
//}
}
public SettingsPage()
{
InitializeComponent();
this.SearchProviderListPicker.ItemsSource = SearchProvider;
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
//Send searchProvider to MainPage.xaml
if (searchProvider != null)
{
//this.NavigationService.Navigate(new Uri("/MainPage.xaml?curProvider=" + searchProvider, UriKind.Relative));
NavigationContext.Equals("curProvider=" + searchProvider);
}
}
MainPage.xaml.cs
string _searchProvider;
//OnNavigatedTo method
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
//for Search Provider (from SettingsPage.xaml)
NavigationContext.QueryString.TryGetValue("curProvider", out _searchProvider);
}
private void SearchBar_Click(object sender, KeyEventArgs e)
{
string search;
string _search = SearchBar.Text;
search = HttpUtility.UrlEncode(_search);
//search whats in the searchbar
//use inputscope enter key to start search!
if (e.Key == Key.Enter)
{
//check to ensure absolute navigation uri, else search through bing?
if (String.IsNullOrEmpty(search))
return;
if (search.Equals("about:blank"))
return;
if (_searchProvider != null)
{
TheBrowser.Navigate(_searchProvider + search);
}
//Google
//TheBrowser.Navigate("http://www.google.com/search?q=" + search);
//Bing
//TheBrowser.Navigate("http://www.bing.com/search?q=" + search);
//Yahoo
//TheBrowser.Navigate("http://search.yahoo.com/search?p=" + search);
//Ask
//TheBrowser.Navigate("http://www.ask.com/web?q=" + search);
//AOL
//TheBrowser.Navigate("http://search.aol.com/search?q=" + search);
//lose focus of textbox while navigating
this.Focus();
}
}
を次のように基本的に私が合格したいです選択されたListPicker項目をメインページに追加して、ウェブブラウジングのデフォルトの検索プロバイダとして使用できるようにしますr制御。これがどのように実装されるかについてのアイデアはありますか?どのようなコードの支援が大いに評価されるだろう..私は本当にこれを正しく達成するためにどのようなデバッグやランタイムエラーはありませんが、Webブラウザは選択したListPickerアイテムを使用しようとすると検索しません。前もって感謝します!
'AddedItems'は選択された項目のリストを返します。直接 '' Equals( "somestring")を実行することはできません。特定のアイテムオブジェクトを取得して、比較を使用しようとします。 – abhinav