kingtak
پنج شنبه 28 دی 1391, 23:21 عصر
با اجازه اساتید میخوام طریقه ساخت یه فید ریدر ساده رو آموزش بدم.
من خودم خیلی وقت بود دنبال همچین چیزی بودم تو انجمن هم بار ها دیدم خیلیا دنبالشن.البته من خودم هم توی یه سایت خارجی این آموزش رو دیدم گفتم بد نیست یه نگا بهش بکین...
98560
خوب...
فید ریدر ما با استفاده از کلاس SyndicationFeed کار میکنه.شما با این کلاس میتونید با یه کد کوچیک فیدهای هر سایتی رو که دوست دارید رو بخونید.
using زیر رو به برننامه تون اضافه کنید:
using System.ServiceModel.Syndication;
بذارید اول با یه کد ساده توی محیط Console این کار رو نشونتون بدم:
string url = "http://www.prolearn-vs.com/feed";
using (XmlReader reader = XmlReader.Create(url))
{
SyndicationFeed feed = SyndicationFeed.Load(reader);
Console.WriteLine(feed.Title.Text);
Console.WriteLine(feed.Links[0].Uri);
foreach(SyndicationItem item in feed.Items)
{
Console.WriteLine(item.Title.Text);
}
}
خیلی راحته،مگه نه؟
خوب حالا میخواهیم یه فید ریدر گرافیکی توی WPF درست کنیم.
کد XAML ما به اینصورت خواهد بود:
<Window x:Class="TestFeeds.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Minimalist feed reader" Height="286" Width="531">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0">
<Button Name="btnGo"
DockPanel.Dock="Right"
Width="50"
Content="Go"
Click="btnGo_Click" />
<TextBox Name="txtUrl" />
</DockPanel>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ListBox Name="lstFeedItems"
Grid.Column="0"
DisplayMemberPath="Title.Text" />
<GridSplitter Grid.Column="1"
VerticalAlignment="Stretch"
Width="3"
ResizeBehavior="PreviousAndNext"
ResizeDirection="Columns"/>
<Frame Name="frmContents"
Source="{Binding SelectedItem.Links[0].Uri, ElementName=lstFeedItems}"
Grid.Column="2"
NavigationUIVisibility="Visible">
</Frame>
</Grid>
</Grid>
</Window>
حالا به پنجره Design برگردید و روی دکمه Go دوبار کلیک کنید تا کد رویداد دکمه تولید بشه و کد زیر رو داخل کد دکمه قرار بدید..
using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(txtUrl.Text)) {
SyndicationFeed feed = SyndicationFeed.Load(reader);
lstFeedItems.ItemsSource = feed.Items;
}
حالا کدتون رو اجرا کنید و آدرس فید یه سایتی رو وارد کنید و دکمه GO رو کلیک کنید....
میبینید که برنامه به درستی کار میکنه.
به همین سادگی به همین خوشمزگی!!!!
امید وارم مطلب مفیدی بوده باشه.
من خودم خیلی وقت بود دنبال همچین چیزی بودم تو انجمن هم بار ها دیدم خیلیا دنبالشن.البته من خودم هم توی یه سایت خارجی این آموزش رو دیدم گفتم بد نیست یه نگا بهش بکین...
98560
خوب...
فید ریدر ما با استفاده از کلاس SyndicationFeed کار میکنه.شما با این کلاس میتونید با یه کد کوچیک فیدهای هر سایتی رو که دوست دارید رو بخونید.
using زیر رو به برننامه تون اضافه کنید:
using System.ServiceModel.Syndication;
بذارید اول با یه کد ساده توی محیط Console این کار رو نشونتون بدم:
string url = "http://www.prolearn-vs.com/feed";
using (XmlReader reader = XmlReader.Create(url))
{
SyndicationFeed feed = SyndicationFeed.Load(reader);
Console.WriteLine(feed.Title.Text);
Console.WriteLine(feed.Links[0].Uri);
foreach(SyndicationItem item in feed.Items)
{
Console.WriteLine(item.Title.Text);
}
}
خیلی راحته،مگه نه؟
خوب حالا میخواهیم یه فید ریدر گرافیکی توی WPF درست کنیم.
کد XAML ما به اینصورت خواهد بود:
<Window x:Class="TestFeeds.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Minimalist feed reader" Height="286" Width="531">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0">
<Button Name="btnGo"
DockPanel.Dock="Right"
Width="50"
Content="Go"
Click="btnGo_Click" />
<TextBox Name="txtUrl" />
</DockPanel>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ListBox Name="lstFeedItems"
Grid.Column="0"
DisplayMemberPath="Title.Text" />
<GridSplitter Grid.Column="1"
VerticalAlignment="Stretch"
Width="3"
ResizeBehavior="PreviousAndNext"
ResizeDirection="Columns"/>
<Frame Name="frmContents"
Source="{Binding SelectedItem.Links[0].Uri, ElementName=lstFeedItems}"
Grid.Column="2"
NavigationUIVisibility="Visible">
</Frame>
</Grid>
</Grid>
</Window>
حالا به پنجره Design برگردید و روی دکمه Go دوبار کلیک کنید تا کد رویداد دکمه تولید بشه و کد زیر رو داخل کد دکمه قرار بدید..
using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(txtUrl.Text)) {
SyndicationFeed feed = SyndicationFeed.Load(reader);
lstFeedItems.ItemsSource = feed.Items;
}
حالا کدتون رو اجرا کنید و آدرس فید یه سایتی رو وارد کنید و دکمه GO رو کلیک کنید....
میبینید که برنامه به درستی کار میکنه.
به همین سادگی به همین خوشمزگی!!!!
امید وارم مطلب مفیدی بوده باشه.