Kezdőlap > Windows 8 > WinRT hiányosságok – II. rész (IValueConverter)

WinRT hiányosságok – II. rész (IValueConverter)

2013. március 27. szerda Hozzászólás Go to comments

Szóval, mint írtam, felszeretném hívni a figyelmet néhány WinRT-s API hiányosságra, ami bosszantó lehet a fejlesztőnek. A mai témánk az IValueConverter.

Az IValueConverter interface a WPF-ben jelent meg, és az egyik leghasznosabb társnak bizonyult az idők folyamán. Ugyanis adataink nem mindig, úgy vagy olyan formán állnak a rendelkezésünkre mint ahogy azt mi szeretnénk.Gyakori scenario amikor a convertert egyszerűen csak szöveg formázására, használjuk.(Dátum, pénznem, telefonszám, pin kód stb) Például: Az adatbázisban a telefonszámok formázatlanul szerepelnek, viszont a felületen mi már egy szépen tagolt telefonszámot szeretnénk látni. De számos eset van még, ahol a converterk jól jönnek. Ez csak 1 eset a sokból.

Fórumokon nagyon hangzatos az, hogy a WinRT majd megváltja a világot, hisz a Windows Phone 8 és a Windows 8 azonos alapokra épül, és itt jön a kedvenc mondatom könnyű portolni Windows 8-as alkalmazást Windows Phone 8-ra. Nos aki ezt mondja az valószínűleg nem protolt még alkalmazást a két platform között. Bár igazat kell adni abban, hogy könnyebb, meg h vannak közös részek, de ennyi erővel a WP7 és WPF –es alkalmazásokra is igaz volt. (jó egy picit nagyobb költői túlzással)

Ezt az alábbi egyszerű példán keresztül is láthatjuk majd, hogy #if kell még a legegyszerűbb kódrészlethez is.

Csak az összehasonlítás kedvéért, íme a Windows 8 IValueConverter interface Convert metódusának törzse:

publicobject Convert(object value, Type targetType, object parameter, string language)

És íme a Windows Phone 8-as Convert metódusa:

publicobject Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)       

Mint látható, az utolsó paraméterben különbözik. A WP8 –nál CultureInfo van (és ez a jobb!), míg Windows 8-nál string language. (Érted string! 🙂 )

Hogy kéne ezt a problémát feloldani portolásnál? Itt jön a #if, azaz feltételes fordítással! (yeeah)

publicclassNumberConverter : IValueConverter
{
#if NETFX_CORE
    public object Convert(object value, Type targetType, object parameter, string language)
#else
    publicobject Convert(object value, Type targetType, object parameter, CultureInfo culture)
#endif

Mondjuk addig kevesebb a probléma, amíg nem érdekelnek a különböző kultúrák, hanem csak az angol vagy a magyar. Az igazi szépség akkor jön, amikor tényleg globális piacra több nyelvű alkalmazást akarunk írni. Valóban furának tűnhet, de akár hogy is de hordozható valamilyen szinten a kód. “Sajnos” (illetve annyira nem) se Andoridos, se iOS tapasztalatom nincs, hogy ott milyen a portolás, tehát lehet, hogy azokon a platformokon rosszabb. (nem tudom) Mindenesetre itt is vannak fura, dolgok. Ja és igen a Blue az érkezik, gőz erővel jön. De, ha ezt a paramétert javítják a következő változatban (már csak azért is, hogy még közelebb hozzák a két platformot), akkor pedig visszafelé nem lesz kompatibilisek az alkalmazások. (Gondolom ezt is megoldják, majd valahogy. Csak jelezném, hogy akkor ugyanott lesznek mint a Win32-vel.)

  1. eMeL
    2013. március 27. szerda - 18:12

    Én azt nem értem, hogyan is születnek ezek az “esetek”.

    Minden platformra megírnak mindent mégegyszer?

    Naivan azt feltételeztem, hogy az XAML feldolgozó és kezelő forráskód nagyrésze platformokon átívelően azonos.
    Na de miért nem?

    • 2013. március 27. szerda - 19:10

      Az igazság odaát van. 🙂 Nem tudom, de biztos van rá értelmes magyarázat. (Vagy legalább is remélem)

  2. 2013. március 27. szerda - 18:39

    Jo ez a string 😀 es gondolom ha elirom, akkor nem szol egy szot se, csak nezek, hogy miert nem mukodik. Azert latszik, hogy van meg mit fejlodni microsofteknal. Outsourceoltak indiaba a WinRT api fejlesztest es nem is komunikaltak, vagy mi?

    • 2013. március 27. szerda - 19:12

      Jól gondolod, Plusz, ha ténlyeg használod, akkor cask képzeld el, milyen szép feltételes elágazások lesznek a kódban. Én is kiváncsi lennék a csapatra, hogy kikből áll.

  3. surex
    2013. március 28. csütörtök - 15:43

    Január elején elhatároztuk h meglévő de még Marketplecen nem lévő WP7 alkalmazásunkat “átkattintjuk” WP8-ra és W8-ra. Utóbbinál feladtam a közös kódbázist ,mert annyira kevés közös volt bennük, hogy minden interface-t implementálhattam újra W8 -on… Szóval amíg nem próbáltam elhittem a Marketing bullshitet, hogy könnyű portolni WP8 és W8 közt, de a valóságtól ez nagyon messze van! Online course a mit hogyan fejlesszünk WP(-ra és W8-ral: https://www.microsoftvirtualacademy.com/training-courses/build-apps-for-both-windows-8-and-windows-phone-8 Érdemes megnézni, bár nem visz közelebb a célhoz!

  1. No trackbacks yet.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: