Hitchhiker's guide to the win8

Post on 01-Dec-2014

728 views 1 download

description

 

Transcript of Hitchhiker's guide to the win8

안녕하세요김주아입니다.Microsoft Student Partners 5th

Student + Woman + DeveloperMicrosoft R&D Intern

Dongduk Women’s University

Who am I ?

Imagine cup 2012

Windows Metro style App Challenge 3rd Place

http://dev.windows.com/apps

public class FeedData{

public string Title { get; set; }public string Description { get; set; }public DateTime PubDate { get; set; }public ImageSource Image { get; set; }public List<FeedItem> Items { get; set; }

}

public class FeedItem{

public string Title { get; set; }public string Content { get; set; }public DateTime PubDate { get; set; }public Uri Link { get; set; }public ImageSource Image

}

public async Task GetFeedsAsync(){

Task<FeedData> feed1 =GetFeedAsync("http://cartoon.media.daum.net/webtoon/rss/koala");

this.Feeds.Add(await feed1);}

private async Task<FeedData> GetFeedAsync(string feedUriString){

// using Windows.Web.Syndication;SyndicationClient client = new SyndicationClient();Uri feedUri = new Uri(feedUriString);SyndicationFeed feed = await client.RetrieveFeedAsync(feedUri);

FeedData feedData = new FeedData();feedData.Title = feed.Title.Text;feedData.Description = feed.Subtitle.Text;feedData.PubDate = feed.Items[0].PublishedDate.DateTime;

foreach (SyndicationItem item in feed.Items){

FeedItem feedItem = new FeedItem();feedItem.Title = item.Title.Text;feedItem.PubDate = item.PublishedDate.DateTime;feedItem.Content = item.Summary.Text;feedItem.Link = item.Links[0].Uri;feedItem._imagePath = item.Summary.Text.Substring(10, item.Summary.Text.Length - 10 - (item.Title.Text.Length + 2));

feedData._imagePath = item.Summary.Text.Substring(10, item.Summary.Text.Length - 10 - (item.Title.Text.Length + 2));feedData.Items.Add(feedItem);

}return feedData;

}

<ResourceDictionary><local:FeedDataSource x:Key="feedDataSource"/>

</ResourceDictionary>

FeedDataSource feedDataSource = (FeedDataSource)App.Current.Resources["feedDataSource"];if (feedDataSource != null){

if (feedDataSource.Feeds.Count == 0){

await feedDataSource.GetFeedsAsync();}this.DefaultViewModel["Items"] = feedDataSource.Feeds;

}

ItemPage.xaml.cs Loadstate에추가

void ItemView_ItemClick(object sender, ItemClickEventArgs e){

this.Frame.Navigate(typeof(SplitPage), e.ClickedItem);}

ItemsPage.cs

SplitPage.xaml

<Gridx:Name="itemDetailGrid">

<WebViewx:Name="contentView"Grid.Row="1"Margin="0"/>

</Grid>

SplitPage.xaml.cs

protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState){

FeedData feedData = navigationParameter as FeedData;if (feedData != null){

this.DefaultViewModel["Group"] = feedData;this.DefaultViewModel["Items"] = feedData.Items;

}

}

SplitPage.xaml.cs

void ItemListView_SelectionChanged(object sender, SelectionChangedEventArgs e){

Selector list = (Selector)sender;FeedItem selectedItem = (FeedItem)list.SelectedItem;if (selectedItem != null){

this.contentView.Navigate(selectedItem.Link);

}else{

this.contentView.NavigateToString("");}

}

http://msdn.microsoft.com/ko-kr/library/windows/apps/xaml/br211380.aspx

김주아Jua Alice Kim

Microsoft Korea R&D Intern