안녕하세요
김주아입니다.
Dongduk Women’s University
Microsoft Student Partners 5th
Student + Woman + Developer
Microsoft R&D Intern
Who am I ?




Imagine cup 2012
Windows Metro style App Challenge 3rd Place
http://dev.windows.com/apps
public class FeedData                          public class FeedItem
{                                             {
    public string Title { get; set; }              public string Title { get; set; }
    public string Description { get; set; }        public string Content { get; set; }
    public DateTime PubDate { get; set; }          public DateTime PubDate { get; set; }
    public ImageSource Image { get; set; }         public Uri Link { get; set; }
    public List<FeedItem> Items { get; set; }      public ImageSource Image
}                                             }
private async Task<FeedData> GetFeedAsync(string feedUriString)
{
     // using Windows.Web.Syndication;
     SyndicationClient client = new SyndicationClient();
     Uri feedUri = new Uri(feedUriString);
     public async Task GetFeedsAsync()
     SyndicationFeed feed = await client.RetrieveFeedAsync(feedUri);
    {
    FeedData feedData = new feed1 =
         Task<FeedData> FeedData();
     feedData.Title = feed.Title.Text;
             GetFeedAsync("http://cartoon.media.daum.net/webtoon/rss/koala");
     feedData.Description = feed.Subtitle.Text;
         this.Feeds.Add(await feed1);
     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>



ItemPage.xaml.cs Loadstate에 추가
 FeedDataSource feedDataSource =
(FeedDataSource)App.Current.Resources["feedDataSource"];
if (feedDataSource != null)
{
    if (feedDataSource.Feeds.Count == 0)
    {
        await feedDataSource.GetFeedsAsync();
    }
    this.DefaultViewModel["Items"] = feedDataSource.Feeds;
}
ItemsPage.cs
void ItemView_ItemClick(object sender, ItemClickEventArgs e)
{
    this.Frame.Navigate(typeof(SplitPage), e.ClickedItem);
}
SplitPage.xaml

<Grid
x:Name="itemDetailGrid">
    <WebView
    x: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
Hitchhiker's guide to the win8

Hitchhiker's guide to the win8

  • 2.
    안녕하세요 김주아입니다. Dongduk Women’s University MicrosoftStudent Partners 5th Student + Woman + Developer Microsoft R&D Intern
  • 3.
    Who am I? Imagine cup 2012 Windows Metro style App Challenge 3rd Place
  • 8.
  • 17.
    public class FeedData public class FeedItem { { public string Title { get; set; } public string Title { get; set; } public string Description { get; set; } public string Content { get; set; } public DateTime PubDate { get; set; } public DateTime PubDate { get; set; } public ImageSource Image { get; set; } public Uri Link { get; set; } public List<FeedItem> Items { get; set; } public ImageSource Image } }
  • 18.
    private async Task<FeedData>GetFeedAsync(string feedUriString) { // using Windows.Web.Syndication; SyndicationClient client = new SyndicationClient(); Uri feedUri = new Uri(feedUriString); public async Task GetFeedsAsync() SyndicationFeed feed = await client.RetrieveFeedAsync(feedUri); { FeedData feedData = new feed1 = Task<FeedData> FeedData(); feedData.Title = feed.Title.Text; GetFeedAsync("http://cartoon.media.daum.net/webtoon/rss/koala"); feedData.Description = feed.Subtitle.Text; this.Feeds.Add(await feed1); 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; }
  • 19.
    <ResourceDictionary> <local:FeedDataSource x:Key="feedDataSource"/> </ResourceDictionary> ItemPage.xaml.cs Loadstate에 추가 FeedDataSource feedDataSource = (FeedDataSource)App.Current.Resources["feedDataSource"]; if (feedDataSource != null) { if (feedDataSource.Feeds.Count == 0) { await feedDataSource.GetFeedsAsync(); } this.DefaultViewModel["Items"] = feedDataSource.Feeds; }
  • 20.
    ItemsPage.cs void ItemView_ItemClick(object sender,ItemClickEventArgs e) { this.Frame.Navigate(typeof(SplitPage), e.ClickedItem); }
  • 21.
    SplitPage.xaml <Grid x:Name="itemDetailGrid"> <WebView x:Name="contentView" Grid.Row="1" Margin="0"/> </Grid>
  • 22.
    SplitPage.xaml.cs protected override voidLoadState(Object navigationParameter, Dictionary<String, Object> pageState) { FeedData feedData = navigationParameter as FeedData; if (feedData != null) { this.DefaultViewModel["Group"] = feedData; this.DefaultViewModel["Items"] = feedData.Items; } }
  • 23.
    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(""); } }
  • 28.
  • 29.