Georg fährt extra nach Berlin um Steve Ballmer zu treffen

31 Tage Mango | Tag #18: Beispieldaten

Die­ser Arti­kel ist Tag #18 der Serie 31 Tage Man­go von Jeff Blan­ken­burg.

Der Ori­gi­nal­ar­ti­kel befin­det sich hier: Day #18: Using Sam­ple Data.

Heu­te wer­den wir uns anschau­en, wie wir mit Expres­si­on Blend Bei­spiel­da­ten für unse­re Anwen­dung erzeu­gen. Wenn Sie eine Anwen­dung ent­wi­ckeln, wol­len Sie oft sehen, wie die Daten in der Benut­zer­ober­flä­che aus­se­hen wür­den, ohne auf die ech­te Daten­bank oder den ech­ten Web­ser­vice zugrei­fen zu müs­sen. Um so etwas zu machen, kön­nen wir Expres­si­on Blend ver­wen­den.

Da ich Expres­si­on Blend schon öfter behan­delt habe, sind hier eini­ge „Lite­ra­tur­emp­feh­lun­gen“:

In unse­rem heu­ti­gen Arti­kel legen wir ein­fach direkt los.

Die Windows Phone Anwendung erstellen

Wie bei den meis­ten Arti­keln die­ser Serie habe ich ein klei­nes Video auf­ge­nom­men, um zu demons­trie­ren, was wir mit die­sem Arti­kel errei­chen wol­len. Ich wer­de alles erklä­ren, was in dem Video zu sehen ist. Wenn Sie sich trotz­dem lie­ber erst ein Bild machen wol­len, hier ist es:

Wir begin­nen, indem wir ein neu­es Win­dows Pho­ne Pro­jekt erstel­len. Sie haben das hof­fent­lich schon öfter im Visu­al Stu­dio 2010 gemacht — dies­mal legen wir ein neu­es Pro­jekt in Expres­si­on Blend an.

Wenn das Pro­jekt ange­legt ist und Sie die MainPage.xaml Sei­te offen haben, fügen wir unse­rer Sei­te eine List­Box hin­zu. Um das zu machen, kli­cken Sie auf den Pfeil in dem lin­ken Menü-Bal­ken, wäh­len Con­trols und dann das List­Box Sym­bol.

Wenn Sie die List­Box aus­ge­wählt haben, kön­nen Sie die­se auf die Design-Ober­flä­che zie­hen.

Ich habe die List­Box so gestreckt, dass sie den gan­zen Platz im von der Pro­jekt­vor­la­ge erzeug­ten Con­tent­Pa­nel Grid ein­nimmt (das ist der gan­ze Platz unter­halb des „page name“ Schrift­zugs auf der Sei­te).

Beispieldaten erzeugen

Wenn Sie in die rech­te obe­re Ecke von Expres­si­on Blend schau­en, soll­ten Sie einen Rei­ter mit dem Namen „Data“ sehen. Öff­nen Sie die­sen Rei­ter.

Indem Sie auf den But­ton „New Sam­ple Data“ rechts oben in die­sem Rei­ter kli­cken, kön­nen Sie neue Bei­spiel­da­ten für unse­re Anwen­dung erzeu­gen.

Es wird der Dia­log „New Sam­ple Data“ geöff­net. Geben Sie den Daten einen Namen (ich habe mei­ne Fur­ni­tu­re genannt, um mit dem Video über­ein­zu­stim­men).

Sie sehen, dass Sie die Mög­lich­keit haben, die Daten für das gan­ze Pro­jekt zu defi­nie­ren oder für eine spe­zi­el­le Sei­te. Ich emp­feh­le die Wahl von „Pro­ject“, da hier­durch eine Rei­he nütz­li­cher Struk­tu­ren im Pro­jekt ange­legt wer­den, die Sie län­ger­fris­tig ver­wen­den kön­nen.

Durch Drü­cken von OK kom­men wir zurück auf den Rei­ter „Data“, wobei hier jetzt eini­ge Din­ge hin­zu­ge­fügt wur­den.

Wir haben jetzt eine Struk­tur, die jedem ver­traut erschei­nen soll­te, der schon mal mit Daten­ban­ken gear­bei­tet hat. „Fur­ni­tu­re“ reprä­sen­tiert unse­re Daten­bank und „Collec­tion“ ist eine Tabel­le in die­ser Daten­bank. „Property1“ und „Property2“ sind Fel­der in die­ser Tabel­le.

Ich wer­de zwei neue Eigen­schaf­ten hin­zu­fü­gen und die bei­den exis­tie­ren­den umbe­nen­nen, damit sie etwas aus­sa­ge­kräf­ti­ger sind. Aus Collec­tion wird „Chairs“ und wir haben jetzt vier Eigen­schaf­ten SKU, Pri­ce, Descrip­ti­on und Image.

Rechts neben jeder Eigen­schaft gibt es ein klei­nes Sym­bol, wel­ches den Typ der Eigen­schaft reprä­sen­tiert. Für Descrip­ti­on möch­te ich einen String von Wör­tern. Wri wäh­len des­halb hier den „Lorem Ipsum“ String Typ. Dies wird uns zufäl­li­ge Strings mit 20 Wör­tern lie­fern, wobei keins der Wör­ter län­ger als 8 Zei­chen lang ist.

Die Eigen­schaft Image soll Bil­der beinhal­ten — wir wäh­len des­halb den Typ Image. Sie kön­nen hier Ihre eige­ne Men­ge von Bil­dern ange­ben und wir wer­den spä­ter im Arti­kel genau das machen.

Ich set­ze noch schnell die Eigen­schaft Pri­ce auf den Typ „String/Price“ und SKU auf Num­ber mit 6 Stel­len.

Wenn Sie auf den But­ton „View Sam­ple Data“ rechts neben dem Titel „Chairs“ drü­cken, wer­den Sie eine Tabel­le mit zufäl­lig erzeug­ten Daten für jede unse­rer Eigen­schaf­ten sehen. Indem Sie den Wert in „Num­ber of Records“ ver­än­dern, kön­nen Sie bestim­men, wie vie­le Daten­sät­ze Sie ver­wen­den möch­ten.

So weit, so gut. Wir haben Bei­spiel­da­ten erzeugt. Sie wer­den sich jetzt viel­leicht fra­gen, woher die Bil­der der Stüh­le kom­men. Egal, wie Sie Ihre Daten­struk­tur benen­nen: Wenn Sie einen Typ Image ver­wen­den und kei­ne eige­ne Men­ge von Bil­dern ange­ben, wer­den immer die­se Stüh­le ange­zeigt. Das ist also kei­ne Magie, son­dern eine auf die Stan­dard­da­ten von Expres­si­on Blend ange­pass­te Demo.

Um die Bil­der zu ändern, so dass sie bes­ser zu Ihrer Anwen­dung pas­sen, kön­nen Sie die Defi­ni­ti­on der Eigen­schaft Image noch ein­mal öff­nen und ein Ver­zeich­nis auf Ihrem Com­pu­ter ange­ben. Die Bei­spiel­da­ten wer­den dann zum Bei­spiel so wie im fol­gen­den Screen­shot aus­se­hen (vor­aus­ge­setzt, Sie haben die sel­ben Bil­der ver­wen­det).

Jetzt wird es Zeit, die Daten auch zu ver­wen­den.

Beispieldaten in einer Windows Phone App verwenden

Fol­gen­des vor­ne­weg: Die Daten hei­ßen zwar „Sam­ple Data“ — wenn Sie einen klei­nen Satz sta­ti­scher Daten in Ihrer Anwen­dung ver­wen­den wol­len, ist nichts fal­sches dabei, die Daten zu einem per­ma­nen­ten Bestand­teil Ihrer Anwen­dung zu machen. Wo das gesagt ist, zie­hen wir den Kno­ten „Chairs“ aus dem Data Rei­ter auf unse­re List­Box, um die Daten dort dar­zu­stel­len (im fol­gen­den Screen­shot ist der blaue Kas­ten mei­ne Maus, wie ich die Daten auf die List­Box zie­he):

Sobald Sie die Maus los­las­sen, pas­sie­ren zwei Din­ge:

  • Ein DataTem­pla­te für das Lay­out der ein­zel­nen Ele­men­te in der List­Box wird erstellt.
  • Ein Bin­ding zwi­schen den Daten und der List­Box wird erstellt.

In die­sem Bei­spiel befin­det sich der DataTem­pla­te direkt in unse­rer MainPage.xaml und sieht so aus:

<DataTemplate x:Key="ChairsItemTemplate">
    <StackPanel>
        <TextBlock Text="{Binding Description}"/>
        <Image Source="{Binding Image}" HorizontalAlignment="Left" Height="64" Width="64"/>
        <TextBlock Text="{Binding Price}"/>
        <TextBlock Text="{Binding SKU}"/>
    </StackPanel>
</DataTemplate> 

Sie wer­den sehen, dass die List­Box einen Item­Tem­pla­te ent­hält, der die­sen DataTem­pla­te ver­wen­det. Die ItemsSour­ce der List­Box ver­wen­det unse­re Chairs Daten:

<ListBox Margin="8,8,0,8" ItemTemplate="{StaticResource ChairsItemTemplate}" ItemsSource="{Binding Chairs}"/>

Um das Erschei­nungs­bild des DataTem­pla­te zu bear­bei­ten, kön­nen wir wie­der Expres­si­on Blend ver­wen­den. Kli­cken Sie mit rechts auf die List­Box und wäh­len Sie „Edit Addi­tio­nal Tem­pla­tes > Edit Gene­ra­ted Items (Item­Tem­pla­te) > Edit Cur­rent

Dadurch haben sich eini­ge Din­ge in der Benut­zer­ober­flä­che geän­dert. Ers­tens sehen wir ober­halb der Desi­gn­ober­flä­che, dass wir gera­de das Item­Tem­pla­te der List­Box bear­bei­ten.

Zwei­tens ach­ten Sie auf den Bereich Objec­ts and Time­li­ne. Die­ser bezieht sich jetzt nur noch auf den Inhalt des Item­Tem­pla­te, wel­cher 3 Text­Blocks und ein Image Con­trol ent­hält.

Wri kön­nen die Ele­men­te unse­res Item­Tem­pla­tes wie­der direkt in der Desi­gn­ober­flä­che ver­än­dern. Ich habe zum Bei­spiel das Bild des ers­ten Ein­trags etwas grö­ßer gemacht. Da wir den Tem­pla­te ver­än­dern, wer­den die Bil­der aller ande­ren Ein­trä­ge natür­lich eben­falls grö­ßer.

Im nächs­ten Screen­shot sehen Sie, dass ich den Text­Block Descrip­ti­on an den unte­ren Rand des Tem­pla­tes gescho­ben habe und alle Text­Blocks rechts aus­ge­rich­tet habe. Der Text­Block für Pri­ce hat zudem eine grö­ße­re Schrift­grö­ße bekom­men und die Vor­der­grund­far­be ist jetzt grün.

Sie haben jetzt bereits eine funk­ti­ons­fä­hi­ge Anwen­dung (außer Sie wol­len die Lis­te noch schö­ner machen). Wenn Sie den Emu­la­tor star­ten, wer­den Sie eine Anwen­dung mit einer scrol­len­den List­Box sehen. Mit den von mir gemach­ten Ände­run­gen wir die­se etwa so aus­se­hen:

Wo sind die ganzen Beispieldaten?

Wir kön­nen die Anwen­dung im Emu­la­tor aus­füh­ren, die Daten erschei­nen dort und wir kön­nen damit arbei­ten. Sie fra­gen sich jetzt viel­leicht, wo die Daten in unse­rer Anwen­dung eigent­lich ste­cken.

Wenn Sie einen Blick auf die Pro­jekt­struk­tur wer­fen, wer­den Sie einen Ord­ner mit dem Namen Sam­ple­Da­ta sehen.

In die­sem Ord­ner befin­det sich eine Datei Furniture.xaml, die unse­re gene­rier­ten Daten ent­hält. Der Inhalt die­ser Datei sieht bei­spiels­wei­se so aus:

<!--
      *********    DO NOT MODIFY THIS FILE     *********
      This file is regenerated by a design tool. Making
      changes to this file can cause errors.
-->
<SampleData:Furniture xmlns:SampleData="clr-namespace:Expression.Blend.SampleData.Furniture" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
  <SampleData:Furniture.Chairs>
    <SampleData:ChairsItem SKU="366413" Price="$100" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day1-EmulatorTools.png" Description="Nam aliquam sed dis cras class duis integer maecenas praesent" />
    <SampleData:ChairsItem SKU="420965" Price="$29.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day10-NetworkInformation.png" Description="Accumsan aenean quisque bibendum mauris curae nullam donec vivamus est aliquam" />
    <SampleData:ChairsItem SKU="727463" Price="$249.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day11-LiveTiles.png" Description="Nunc aliquet blandit aptent auctor hac congue dictumst eleifend amet etiam ante fusce leo commodo facilisi cursus conubia dictum" />
    <SampleData:ChairsItem SKU="549249" Price="$1000" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day12-BetaTesting.png" Description="Lectus cubilia libero arcu dapibus lorem mus faucibus diam habitant egestas" />
    <SampleData:ChairsItem SKU="829031" Price="$2.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day13-MarketplaceTestKit.png" Description="Euismod inceptos nec eget interdum non elit morbi feugiat nulla ligula gravida lobortis iaculis litora" />
    <SampleData:ChairsItem SKU="758558" Price="$300" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day14-OData.png" Description="Proin enim lacinia laoreet augue nascetur natoque erat dolor per posuere" />
    <SampleData:ChairsItem SKU="342996" Price="$10,999" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day15-ProgressBar.png" Description="Fames sed sem felis sit eros vel nam ipsum justo sed nibh" />
    <SampleData:ChairsItem SKU="604077" Price="$49.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day16-IsolatedStorageExplorer.png" Description="Nisi potenti pretium dis pharetra nisl placerat pulvinar luctus lacus est hac sagittis nunc lorem magnis rhoncus leo sodales" />
    <SampleData:ChairsItem SKU="673946" Price="$25.34" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day17-LocalDatabase.png" Description="Viverra odio orci mattis mus magna massa pede quam aliquam senectus metus nec morbi" />
    <SampleData:ChairsItem SKU="177653" Price="$100" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day17-WindowsAzure.png" Description="Non mauris sociosqu integer suscipit quisque torquent mollis quis per ultrices vehicula sed neque" />
    <SampleData:ChairsItem SKU="788040" Price="$100" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day18-ExpressionBlendSampleData.png" Description="Aenean nam cras maecenas duis class nunc aliquam sed amet praesent dis mauris" />
    <SampleData:ChairsItem SKU="547641" Price="$100" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day19-AddingTiltEffects.png" Description="Integer ante arcu diam accumsan bibendum est nullam dictumst eleifend curae aptent eget donec quisque elit facilisi faucibus" />
    <SampleData:ChairsItem SKU="401054" Price="$29.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day2-DeviceStatus.png" Description="Enim habitant vivamus auctor etiam fusce congue aliquam erat inceptos" />
    <SampleData:ChairsItem SKU="256092" Price="$249.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day20-Ringtones.png" Description="Interdum lobortis aliquet blandit commodo hac conubia lorem cubilia leo nascetur eros pharetra cursus" />
    <SampleData:ChairsItem SKU="852495" Price="$1000" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day21-Sockets.png" Description="Dapibus nibh placerat nisi mus nec morbi nulla nisl proin egestas non euismod" />
    <SampleData:ChairsItem SKU="657020" Price="$2.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day22-AppConnect.png" Description="Per pulvinar feugiat dictum sed gravida sem iaculis sagittis sit lectus lacinia nunc laoreet odio" />
    <SampleData:ChairsItem SKU="450567" Price="$300" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day23-ExecutionModel.png" Description="Augue senectus vel nam sed orci sociosqu dis libero dolor natoque pede ligula fames posuere felis est potenti quam" />
    <SampleData:ChairsItem SKU="546952" Price="$10,999" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day24-ProfilerTool.png" Description="Litora luctus hac ipsum suscipit magnis torquent pretium rhoncus leo quis justo sodales urna mus ultrices lacus lorem viverra nec" />
    <SampleData:ChairsItem SKU="481783" Price="$49.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day25-BackgroundAgents.png" Description="Mattis cras aliquam duis nunc amet magna mauris massa ante integer mollis non per sed quisque" />
    <SampleData:ChairsItem SKU="200702" Price="$25.34" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day26-BackgroundFileTransfers.png" Description="Metus morbi sem neque sit netus vel nam arcu vehicula sed volutpat nulla porta diam" />
    <SampleData:ChairsItem SKU="536695" Price="$100" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day27-MicrophoneAPI.png" Description="Dis purus montes vivamus eget maecenas aliquam elit nostra est risus velit" />
    <SampleData:ChairsItem SKU="275101" Price="$29.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day28-MediaLibrary.png" Description="Ornare vitae platea class aliquet hac curae primis praesent enim erat accumsan leo eros blandit bibendum donec nibh rutrum mus" />
    <SampleData:ChairsItem SKU="979319" Price="$249.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day29-Globalization.png" Description="Nec dictumst commodo nisi etiam nisl eleifend conubia cubilia nunc sapien fusce dapibus non semper sociis egestas" />
    <SampleData:ChairsItem SKU="234379" Price="$1000" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day3-Reminders.png" Description="Taciti odio euismod facilisi faucibus lorem habitant per tellus tempor sed orci inceptos feugiat pede morbi quam" />
    <SampleData:ChairsItem SKU="248085" Price="$2.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day30-ConnectionSettings.png" Description="Nulla tempus tortor proin interdum augue quis gravida iaculis lacinia turpis lobortis urna sem varius sit cras laoreet vel" />
    <SampleData:ChairsItem SKU="982403" Price="$300" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day31-PromotingYourApplication.png" Description="Nascetur nam sed aenean pharetra dis natoque posuere potenti mauris pretium dolor fames placerat nullam aptent" />
    <SampleData:ChairsItem SKU="106433" Price="$10,999" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day4-Compass.png" Description="Est pulvinar duis rhoncus sodales felis nunc hac viverra amet ante ipsum auctor congue" />
    <SampleData:ChairsItem SKU="203433" Price="$49.99" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day5-Gyroscope.png" Description="Leo cursus mus arcu dictum nec diam sagittis aliquam eget non integer lectus elit per enim erat senectus" />
    <SampleData:ChairsItem SKU="660918" Price="$25.34" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day6-Motion.png" Description="Libero justo ligula sed sociosqu sem eros lacus suscipit sit torquent litora quisque nibh nisi nisl lorem" />
    <SampleData:ChairsItem SKU="734363" Price="$100" Image="/Day18_BlendSampleData;component/SampleData/Furniture/Furniture_Files/Day7-RawCamera.png" Description="Nunc magna vel massa luctus odio nam orci ultrices vivamus sed" />
  </SampleData:Furniture.Chairs>
</SampleData:Furniture> 

Die tat­säch­li­che Struk­tur die­ser Daten ist in der Datei Furniture.xaml.cs defi­niert. Die­se ent­hält alle Klas­sen und Eigen­schaf­ten, die wir defi­niert hat­ten, als wir unse­re Bei­spiel­da­ten erstellt haben. Sie sehen, dass alle von uns defi­nier­ten Eigen­schaf­ten vor­han­den sind, eben­so wie die Ver­wei­se auf die Bild-Datei­en.

//      *********    DO NOT MODIFY THIS FILE     *********
//      This file is regenerated by a design tool. Making
//      changes to this file can cause errors.
namespace Expression.Blend.SampleData.Furniture
{
   using System;

// To significantly reduce the sample data footprint in your production application, you can set
// the DISABLE_SAMPLE_DATA conditional compilation constant and disable sample data at runtime.
#if DISABLE_SAMPLE_DATA
   internal class Furniture { }
#else

   public class Furniture : System.ComponentModel.INotifyPropertyChanged
   {
      public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

      protected virtual void OnPropertyChanged(string propertyName)
      {
         if (this.PropertyChanged != null)
         {
            this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
         }
      }

      public Furniture()
      {
         try
         {
            System.Uri resourceUri = new System.Uri("/Day18_BlendSampleData;component/SampleData/Furniture/Furniture.xaml", System.UriKind.Relative);
            if (System.Windows.Application.GetResourceStream(resourceUri) != null)
            {
               System.Windows.Application.LoadComponent(this, resourceUri);
            }
         }
         catch (System.Exception)
         {
         }
      }

      private Chairs _Chairs = new Chairs();

      public Chairs Chairs
      {
         get
         {
            return this._Chairs;
         }
      }
   }

   public class ChairsItem : System.ComponentModel.INotifyPropertyChanged
   {
      public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

      protected virtual void OnPropertyChanged(string propertyName)
      {
         if (this.PropertyChanged != null)
         {
            this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
         }
      }

      private double _SKU = 0;

      public double SKU
      {
         get
         {
            return this._SKU;
         }

         set
         {
            if (this._SKU != value)
            {
               this._SKU = value;
               this.OnPropertyChanged("SKU");
            }
         }
      }

      private string _Price = string.Empty;

      public string Price
      {
         get
         {
            return this._Price;
         }

         set
         {
            if (this._Price != value)
            {
               this._Price = value;
               this.OnPropertyChanged("Price");
            }
         }
      }

      private System.Windows.Media.ImageSource _Image = null;

      public System.Windows.Media.ImageSource Image
      {
         get
         {
            return this._Image;
         }

         set
         {
            if (this._Image != value)
            {
               this._Image = value;
               this.OnPropertyChanged("Image");
            }
         }
      }

      private string _Description = string.Empty;

      public string Description
      {
         get
         {
            return this._Description;
         }

         set
         {
            if (this._Description != value)
            {
               this._Description = value;
               this.OnPropertyChanged("Description");
            }
         }
      }
   }

   public class Chairs : System.Collections.ObjectModel.ObservableCollection<ChairsItem>
   {
   }
#endif
} 

Schließ­lich haben Sie noch den Ord­ner Furniture_Files, wel­cher unse­re ver­wen­de­ten Bei­spiel­bil­der beinhal­tet. Da wir zuerst die Bil­der der Stüh­le und dann die eige­nen Bei­spiel­bil­der ver­wen­det haben, befin­den sich mög­li­cher­wei­se bei­de Men­gen von Bil­dern in die­sem Ord­ner. Wie in den Code-Kom­men­ta­ren ange­ge­ben, soll­ten Sie die­se Datei­en nicht direkt bear­bei­ten, da sie bei der nächs­ten Bear­bei­tung in Expres­si­on Blend über­schrie­ben wer­den wür­den. Es sind gene­rier­te Datei­en und soll­ten ent­spre­chend behan­delt wer­den.

Zusammenfassung

Sie haben jetzt eine Anwen­dung, die Bei­spiel­da­ten ver­wen­det. Die Daten haben wir mit Expres­si­on Blend erzeugt die­se unter Ver­wen­dung eines DataTem­pla­te in einer List­Box ange­zeigt. Es gibt für die­se Tech­nik vie­le prak­ti­sche Anwen­dungs­ge­bie­te. Den­ken Sie dar­an, wenn Sie sta­ti­sche Daten­sät­ze haben und nicht eine auf­wän­di­ge­re Daten­quel­le (wie Web­ser­vices oder Daten­ban­ken) benut­zen müs­sen.

Wenn Sie die kom­plet­te Win­dows Pho­ne Anwen­dung mit den Bei­spiel­da­ten her­un­ter­la­den möch­ten, kli­cken Sie auf den Down­load Code But­ton.

Mor­gen wird Doug Mair zei­gen, wie wir den Tilt Effekt für unse­re XAML Ele­men­te ver­wen­den kön­nen. Damit bekommt der Anwen­der inter­ak­ti­ves Feed­back auf sei­ne Touch Ges­ten.

Bis dahin!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert