MetroスタイルRSSリーダーに検索を追加
3528 ワード
前回は簡単なWin 8 MetroスタイルのRSSリーダーを書いたことがありますが、詳しくはhttp://boytnt.blog.51cto.com/966121/860937あ、今日は検索機能を追加します.まず図を見てください.
Metro App標準の検索機能(SearchPane)を使用しており、キーボードWin+Qで呼び出すことができます.
上のコード、MainPage.xaml.cs:
コードは複雑ではありませんが、実行するには、本プログラムが検索機能をサポートしていることを宣言し、Packageを開く必要があります.appxmanifestファイル、“検索”図:
またVSバージョンがアップグレードされて、あまり変わっていないようですよ.
Metro App標準の検索機能(SearchPane)を使用しており、キーボードWin+Qで呼び出すことができます.
上のコード、MainPage.xaml.cs:
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Text;
using Windows.ApplicationModel.Search; //SearchPane
using Windows.Data.Xml.Dom;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
namespace Rss
{
public sealed partial class MainPage : Page
{
private SearchPane m_SearchPane;
public MainPage()
{
this.InitializeComponent();
// View
m_SearchPane = SearchPane.GetForCurrentView();
// ,
m_SearchPane.PlaceholderText = " ";
// Handler
m_SearchPane.QuerySubmitted += SearchPane_QuerySubmitted;
// Handler
m_SearchPane.SuggestionsRequested += SearchPane_SuggestionsRequested;
}
private void SearchPane_QuerySubmitted(SearchPane sender, SearchPaneQuerySubmittedEventArgs args)
{
var articles = gvArticles.ItemsSource as List<BlogArticle>;
foreach (var article in articles)
{
if (article.Title == args.QueryText)
{
//
Redirect(article);
break;
}
}
}
private void SearchPane_SuggestionsRequested(SearchPane sender, SearchPaneSuggestionsRequestedEventArgs args)
{
var articles = gvArticles.ItemsSource as List<BlogArticle>;
foreach (var article in articles)
{
if (article.Title.IndexOf(args.QueryText, StringComparison.CurrentCultureIgnoreCase) >= 0)
{
//
args.Request.SearchSuggestionCollection.AppendQuerySuggestion(article.Title);
}
}
}
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
// ,
}
private void gvArticles_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var articles = gvArticles.ItemsSource as List<BlogArticle>;
int index = gvArticles.SelectedIndex;
Redirect(articles[index]);
}
private void Redirect(BlogArticle article)
{
// Handler,
m_SearchPane.QuerySubmitted -= SearchPane_QuerySubmitted;
m_SearchPane.SuggestionsRequested -= SearchPane_SuggestionsRequested;
rootPage.Frame.Navigate(typeof(ArticlePage), article);
}
}
}
コードは複雑ではありませんが、実行するには、本プログラムが検索機能をサポートしていることを宣言し、Packageを開く必要があります.appxmanifestファイル、“検索”図:
またVSバージョンがアップグレードされて、あまり変わっていないようですよ.