Toplam 71 Görüntülenme
Merhabalar,
WP7 ile rss okuma ve ekran çıktısı alma işlemi üzerinde ufak bir uygulama geliştireceğiz.
Bu makaledem Rss’i bind etme ve ListBox Kontrolün DataItemTemplate özelliğini kullanacağız.
Öncelikle Yeni bir proje açıyoruz. Bu projemizde Windows Phone Panaroma Application yerine Sadece Windows Phone Application Seçeneğini seçiyourz.
Uygulamamızı Oluşturdukdan sonra Rss okumak için gerekli olan referansımızı Refenrences’ e sağ tıklayarak Browse Seçeneğini seçiyoruz ve
Referans dosyamız %ProgramFiles%\Microsoft SDKs\Silverlight\v3.0\Libraries\Client\System.ServiceModel.Syndication.dll Dizini altında bulunmaktadır

Referansımızı ekledikten sonra Visual Studio Aşağıda görmüş olduğunuz uyarı mesajını verecektir. YES Tuşuna basıp Referansımızı ekliyoruz.

Evet Şu anda projemiz ve referans dosyamız hazır. Kod yazmaya geçmeden önce MainPage.xaml dosyamızı resimde görüldüğü gibi bir
button ve listbox atarak Title ve Page contentlerini isteğinize göre düzenleyerek ana ekranımızı oluşturabiliriz.

RssItem.cs
Yeni bir class dosyası oluşturup ismini RssItem.cs verelim. ve aşağıdaki kodu bu class dosyamızın içine yazalım.
///
/// Model
///
public class RssItem
{
/*
* -
Alış:1.7860 TL ~ Satış:1.8000 TL
http://kur.doviz.com/serbest-piyasa
*
* */
public RssItem(string title, string description, string Link)
{
Title = title;
Description = description.Split('~');
Url = Link;
}
public string Title { get; set; }
public string[] Description { get; set; }
public string Url { get; set; }
RssService.cs
RssItem Classımızı tetiklemek üzere kullanacağımız servis class dosyamızdır. Bu dosyayı aşağıdaki gibi modifiye ediyoruz.
public static class RssService
{
public static void GetRssItems(string rssFeed, Action> onGetRssItemsCompleted = null, Action onError = null, Action onFinally = null)
{
WebClient webClient = new WebClient();
// Download Bitişini Register Ediyoruz
webClient.OpenReadCompleted += delegate(object sender, OpenReadCompletedEventArgs e)
{
try
{
// Error varmı varsa Rapor et
if (e.Error != null)
{
if (onError != null)
{
onError(e.Error);
}
return;
}
// Rss den gelen değerleri Modelimize Bind Ediyoruz
List rssItems = new List();
Stream stream = e.Result;
XmlReader response = XmlReader.Create(stream);
SyndicationFeed feeds = SyndicationFeed.Load(response);
foreach (SyndicationItem f in feeds.Items)
{
RssItem rssItem = new RssItem(f.Title.Text, f.Summary.Text.Trim(), f.Links[0].Uri.AbsoluteUri);
rssItems.Add(rssItem);
}
// Callback complate
if (onGetRssItemsCompleted != null)
{
onGetRssItemsCompleted(rssItems);
}
}
finally
{
// Callback Bitti
if (onFinally != null)
{
onFinally();
}
}
};
webClient.OpenReadAsync(new Uri(rssFeed));
}
}
Bu class dosyamızda ana Modelimizi Data Context modelimizi oluşturdur. Bundan sonra gelecek bütün datalarımızı bu Model vasıtası ile işleyerek RssItem olarak geri döndüreceğiz.
MainPage.xaml
Mainde bulunan Button üzerine çif tıklayarak yazmış olduğumuz Service Classını tetikletiyoruz.
RssService.GetRssItems("http://www.doviz.com/servis/rss/doviz/serbest-piyasa",
(items) => { list.ItemsSource = items; },
(exception) => { MessageBox.Show(exception.Message); },
null
);
En son olarak
MainPage.xaml de bulunan ListBox kontrolümüze data bind edeceğimiz için önceden yazmış olduğumuz Data Model e göre Template uygulaması yapıyoruz.
Programımızın çalışma zamanı görüntüsü ise aşağıdaki gibi olacaktır.

Proje Dosyasını Buradan İndirebilirsiniz
Sulubeyn

