簡易RSSリーダ

このブログを書いているWordPressにはRSS機能が標準的に存在します、例えばこのブログのRSSはコチラ

簡単にRSSのタイトルだけを表示するならこんな感じでしょうか。

MainWindow.xaml.cs

namespace SimpleRssReader
{
    using System.IO;
    using System.Net.Http;
    using System.ServiceModel.Syndication;
    using System.Windows;
    using System.Xml;
    public partial class MainWindow : Window
    {
        public MainWindow(){
            InitializeComponent();
        }

        private async void moveButton_Click(object sender, RoutedEventArgs e)
        {
            HttpClient client = new HttpClient();
            var result = await client.GetStringAsync(RssUri.Text);

            var reader = XmlReader.Create(new StringReader(result));
            var feed = SyndicationFeed.Load(reader);
            rssResult.ItemsSource = feed.Items;
        }
    }
}

MainWindow.xaml

<Window x:Class="SimpleRssReader.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="229" Width="525">
    <Window.Resources>
        <DataTemplate x:Key="DataTemplate1">
            <Grid>
                <TextBlock HorizontalAlignment="Left" Margin="2,0,0,0" TextWrapping="Wrap" Text="{Binding Title.Text}" VerticalAlignment="Top"/>
            </Grid>
        </DataTemplate>
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="56*"/>
            <RowDefinition Height="283*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="101*"/>
            <ColumnDefinition Width="321*"/>
            <ColumnDefinition Width="95*"/>
        </Grid.ColumnDefinitions>
        <TextBox x:Name="RssUri" Grid.Column="1" TextWrapping="Wrap" Text="https://tocsworld.wordpress.com/?feed=rss2" Margin="3"/>
        <Button x:Name="moveButton" Content="Move" Grid.Column="2" Margin="3,3,3,0" Height="23" VerticalAlignment="Top" Click="moveButton_Click"/>
        <Label Content="Title" Height="29" VerticalAlignment="Bottom"/>
        <ListBox x:Name="rssResult" Grid.Row="1" Grid.ColumnSpan="3" Margin="3,5" ItemTemplate="{DynamicResource DataTemplate1}"/>
    </Grid>
</Window>

実行時の様子はこちら、SyndicationFeedからはIEnumerable<SyndicationItem>が得られます、このタイトルをデータテンプレートを使ってTextBlockでバインド・表示させているだけです。

simple_rss

これに気象予報のRSSはこちらで提供されているので組み合わせるとお天気ソフトが。。

 

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中