Flipview und Template Selector

Grundsätzlich ist das Windows 8 FlipView Control ein Datensteuerelement. Man bindet es an eine Liste und der Benutzer kann per Flip Geste rechts links oder oben unten weiter blättern. Geht natürlich auch mit der Maus. In der Regel zeigt man nur einen Datensatz an. Wenn man so will das Forms Control. Klar kann man auch mit der Maus navigieren.

image

Allerdings kann man auch verschiedene Sichten verwenden,die sich im XAML von WinRT als DataTemplates wieder spiegeln. Ob man damit einen Formular Wizard bauen sollte, bezweifle ich aktuell noch.

Zunächst das WinRT FlipView Control in der XAML Deklaration

<FlipView x:Name="flipview1" HorizontalAlignment="Left" Margin="335,23,0,0"

VerticalAlignment="Top" BorderBrush="white" BorderThickness="1">

   <FlipView.ItemsPanel>
      <ItemsPanelTemplate>
          <StackPanel Orientation="Horizontal"/>
       </ItemsPanelTemplate>
    </FlipView.ItemsPanel>
            
</FlipView>

Dann die beiden Templates im Resources Bereich der XAML Page

<DataTemplate x:Key="ImageTemplate">
     <Grid>
       <Image Width="480" Height="270" Source="Assets/acid.png" Stretch="UniformToFill"/>
       <Border Background="#A5000000" Height="80" VerticalAlignment="Bottom">
           <TextBlock Text="Bild" FontFamily="Segoe UI" FontSize="26.667" Foreground="#CCFFFFFF" />
       </Border>
     </Grid>
</DataTemplate>
<DataTemplate x:Key="ContactTemplate">
      <ContentPresenter Content="{Binding}"/>
</DataTemplate>

Damit wird generell im ContactTemplate die Deklaration aus dem FlipView Bereich übernommen, da der ContentPresenter nur als Platzhalter dient.

Dann braucht man Logik. Und die Logik kommt in eine Klasse, hier TempSelector.  Um dieser Klasse die Daten zur Verfügung zu stellen muss man noch ein wenig VB.NET Code tippen und eine Eigenschaft zwischenschalten die Pubic ist, hier ICH.

Public Shared ich As _14Scroll
...
Public Sub New()
  InitializeComponent()
  ich = Me
   flipview1.ItemTemplateSelector = New TempSelector()
   flipview1.ItemsSource = {"eins", "zwei"}
End Sub

Der Templateselector und die Daten wurden zugwiesen so das nun endgültig das VB.NET Beispiel dran ist. Die Klasse erbt von DataTemplateSelector.

Public Class TempSelector
    Inherits DataTemplateSelector
    Protected Overrides Function SelectTemplateCore(item As Object, 
container As DependencyObject) As DataTemplate
        Dim iDT As DataTemplate =
            _14Scroll.ich.Resources("ImageTemplate")
        Dim cDT As DataTemplate =
            _14Scroll.ich.Resources("ContactTemplate")
        If item = "eins" Then
            Return iDT
        Else
            Return cDT
        End If
    End Function
End Class

Kommentare (1) -

Hannes Preishuber
29.06.2012 09:29:43 #

ich muss hinzufuegen, man kann die TemplateSelector Klasse auch deklarativ erzeugen und zuweisen
ItemTemplateSelector="{StaticResource FileFolderInformationTemplateSelector}"

Kommentare sind geschlossen