Comment “cuisiner” une application Windows 8 avec XAML et C# en une semaine–Jour 4– Pour Windows 8 RTM

 

J’ai mis à jour le code du Jour 4 pour la version RTM de Windows 8.

Rien de bien particulier à signaler, si ce n’est un petit problème dans les DataTemplate et les Styles.

Originellement j’avais inclus les images dans un contrôle bouton au niveau du DataTemplate avec un lien sur un style , mais avec la version RTM, l’évènement click n’est plus levé.

Code Snippet

  1. <DataTemplate x:Key="UrzaCardsItemsGridViewItemTemplate">                          
  2.            <ButtonWidth="{Binding Source={StaticResource urzaSettings}, Path=Zoom.Width}"
  3.                                    Height="{Binding Source={StaticResource urzaSettings},Path=Zoom.Height}"
  4.                   Style="{StaticResource UrzaExpansionGridViewStyle}"/>                                                              
  5. </DataTemplate>

je suis donc revenu à une solution plus simple

Code Snippet

  1.          <DataTemplate x:Key="UrzaCardsItemsGridViewItemTemplate">
  2.         <Grid HorizontalAlignment="Left" Width="{Binding Source={StaticResource urzaSettings}, Path=Zoom.Width}"
  3.                                Height="{Binding Source={StaticResource urzaSettings},Path=Zoom.Height}">
  4.             <UrzaControl:UrzaImage BitmapSource="{Binding Picture}" VerticalAlignment="Stretch"
  5.                                                                HorizontalAlignment="Stretch"
  6.                                >
  7.             </UrzaControl:UrzaImage>
  8.                 </Grid>
  9. </DataTemplate>

Le style étant alors défini, directement dans chaque GridView

Code Snippet

  1.                <GridView
  2.          SelectionChanged="CardsItemsGridView_SelectionChanged"
  3.          x:Name="CardsItemsGridView"
  4.                      SelectionMode="Multiple"
  5.          Grid.Row="2"
  6.          Margin="0,-3,0,0"
  7.          Padding="116,0,40,46"
  8.          IsItemClickEnabled="True"
  9.          ItemsSource="{Binding Source={StaticResource groupedCardsItemsViewSource}}"
  10.             ItemClick="cardsItemsGridView_ItemClick"
  11.          ItemContainerStyleSelector="{StaticResource CardsContainerStyleSelector}"
  12.          ItemTemplate="{StaticResource UrzaCardsItemsGridViewItemTemplate}"
  13.                     >
  14.      </GridView>

Ici j’utilise pour la vue Expansion un Sélecteur de style à la place d’un sélecteur de DataTemplate.

Code Snippet

  1. class CardsContainerStyleSelector : StyleSelector
  2.     {
  3.         static Style UrzaCheckedExpansionGridViewStyle = Application.Current.Resources["UrzaCheckedExpansionGridViewStyle"] as Style;
  4.         static Style UrzaExpansionGridViewStyle = Application.Current.Resources["UrzaExpansionGridViewStyle"] as Style;
  5.         
  6.         protected override Windows.UI.Xaml.Style SelectStyleCore(object item, Windows.UI.Xaml.DependencyObject container)
  7.         {
  8.             var card = item as URZACard;
  9.             return (card.IsChecked == true) ? UrzaCheckedExpansionGridViewStyle : UrzaExpansionGridViewStyle;
  10.         }
  11.     }

Vous retrouverez le code liée à cette article ici :https://aka.ms/isz0ot

 

Eric