Programujte - programování,grafika,webdesign - silverlight,digg,wpf,xaml,api,rest,soap,linq,xml,user,control,template

Webhosting Český hosting
Aktuální rubrika: Články   |  Diskuzní fórum   |  Kritika webů   |  Podcast   |  Kalendář akcí   |  Články na přání   |  E-shop   |  Login/Nový účet
Schovat menu HomeRSS diskuzePřejít na komentářePřidat oblíbené
X

Silverlight/WPF 2 Digg klient - 8. díl Přepnout článek do plného režimu

04. 05. 2009 | 01:00 - Jakub Kottnauer (Chrasty) - 3785× přečteno

Jak už jste asi pochopili podle titulku článku, v tomto, již posledním, dílu se podíváme na převod Silverlight aplikace do WPF.

Velkou výhodou technologií Silverlight a WPF je to, že jsou vesměs to samé, jen jedna z nich se používá na webu a druhá na desktopu. Obě používají XAML pro návrh uživatelského rozhraní a některý z .NET jazyků pro aplikační logiku. Dnes si tedy ukážeme, jak je snadné převést Silverlight Digg klienta na WPF Digg klienta. Začněme vytvořením klasického WPF Application projektu a vznikne nám projektová struktura podobná té u Silverlightu:

Nový projekt
Nový projekt

Teď musíme všechny soubory ze Silverlight verze překopírovat do tohoto projektu, ve výsledku tedy budeme mít soubory App.xaml, Window1.xaml místo Page.xaml, StoryDetailsView.xaml a jejich .cs soubory + soubor DiggStory.cs.

Narazíme na malý problém s HyperlinkButton v StoryDetailsView.xaml, které ve WPF není (zatím), element HyperlinkButton budeme muset nahradit prvkem TextBlock a do něj vložit prvek Hyperlink, detailní kód je tady (nezapomeňte změnit HyperlinkButton na TextBlock i v App.xaml!):

<TextBlock Text="{Binding Title}" Style="{StaticResource TitleLink}" >
    <Hyperlink NavigateUri="{Binding HrefLink}" />
</TextBlock>

Ještě potřebujeme přidat hlavičku user-agent do WebClient v Page.xaml.cs, jinak Digg API vrátí error. Zatímco Silverlight ji defaultně posílá, WPF ne. Daný úsek kódu nyní bude vypadat takto:

WebClient diggService = new WebClient();
diggService.Headers.Add("user-agent", "Ukazkova aplikace"); // novinka!
diggService.DownloadStringCompleted += DiggService_DownloadStoriesCompleted;
diggService.DownloadStringAsync(new Uri(diggUrl));

A nakonec zobrazíme obsah souboru Page.xaml v hlavním okně programu, což je vlastně Window1.xaml. Toho docílíme dvěma novými řádky kódu (jeden z nich je deklarace namespace):

<Window x:Class="DesktopDiggKlient.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Digg="clr-namespace:DiggKlient"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Digg:Page />
    </Grid>
</Window>

Máme hotovo! Aplikaci jsme během pár minut převedli z webu na desktop, všimněte si pár drobných změn ve vzhledu, které jsou dány tím, že WPF odvozuje výchozí písmo atp. od systému, zatímco Silverlight má nadefinované nějaké výchozí hodnoty. Po pár menších úpravách vypadá naše konečná aplikace jako na obrázku níže.

Desktopová verze klienta
Desktopová verze klienta

Snad vám seriál dal nové znalosti a vzbudil ve vás zájem o tuto technologii s jistě zajímavou budoucností! Těším se na shledanou u dalšího seriálu.

Zdroj: http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-8-creating-a-digg-desktop-application-using-wpf.aspx


Jakub Kottnauer
Autor programuje pod .NET frameworkem (C#, WPF, WCF, Silverlight, ASP.NET). Zajímá se o grafiku ve Photoshopu a návrh GUI pomocí Microsoft Expression Blend a Design. Mezi jeho další zájmy patří nejnovější technologie a cizí jazyky (angličtina, španělština, latina).
Jaggni to Linkuj Del.icio.us Jaggni to Tisk článku Tisk      Tisk článku Doporučit     Tisk článku RSS     Tisk článku PDF
Diskuze k článku (0)
K článku dosud nebyly přidány žádné komentáře.
Buďte první!

© 2004-2010 Programujte by Lukáš Churý, ISSN 1801-1586
Tento server dodržuje právní předpisy o ochraně osobních údajů. Všechna práva vyhrazena. Bez svolení redakce není možno texty dále rozšiřovat!
Kontakt | Reklama | Redakce | Podmínky užívání obsahu | Podpořte Programujte.com | Ke stažení | O portálu | RSS exporty [38.107.191.95]

back