2010-12-14 71 views
0

J'ai un Pivot avec ListBoxes dans chaque PevotItem. J'ai fait le contrôle de bouton pour l'animation des éléments dans ListBoxes. Il y a un arbre de ces boutons - chacun d'entre eux a une image différente. Cependant, il existe peut-être un moyen de créer un bouton et de lier la source de l'image. Je pense que cela va améliorer le temps de chargement de la page.windows phone 7, Liaison de source d'image de modèle de bouton

Je serai reconnaissant pour toute réponse.

Voici mon code:

<DataTemplate x:Key="pageItemTemplate"> 
     <Button Content="{Binding name}" Margin="0,0,0,20" Style="{StaticResource PageListItemButton}"/> 
    </DataTemplate> 




<Style x:Key="PageListItemButton" TargetType="Button"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <StackPanel x:Name="stackPanel" Orientation="Horizontal"> 
         <StackPanel.Projection> 
          <PlaneProjection CenterOfRotationY="0" CenterOfRotationX="1"/> 
         </StackPanel.Projection> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CommonStates"> 
           <VisualStateGroup.Transitions> 
            <VisualTransition GeneratedDuration="0:0:0.05"> 
             <VisualTransition.GeneratedEasingFunction> 
              <CircleEase EasingMode="EaseInOut"/> 
             </VisualTransition.GeneratedEasingFunction> 
            </VisualTransition> 
           </VisualStateGroup.Transitions> 
           <VisualState x:Name="Normal"/> 
           <VisualState x:Name="MouseOver"/> 
           <VisualState x:Name="Pressed"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" To="15" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" Storyboard.TargetName="stackPanel" d:IsOptimized="True"/> 
             <DoubleAnimation Duration="0" To="0.7" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="stackPanel" d:IsOptimized="True"/> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="Disabled"/> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <Image Source="Images/MainPage/page.png" Height="40" Stretch="Fill" Width="40"/> 
         <ContentPresenter VerticalAlignment="Bottom"/> 
        </StackPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="FontFamily" Value="/BestNote;component/Fonts/Fonts.zip#Diavlo Bold"/> 
     <Setter Property="FontWeight" Value="Bold"/> 
     <Setter Property="FontSize" Value="24"/> 
     <Setter Property="Foreground" Value="#FF292929"/> 
    </Style> 

Répondre

0

Si vous trouvez le temps de chargement d'une image (taille d'un bouton) est suffisamment importante pour provoquer un retard ouvrant la page, peut-être l'image peut être réduite en taille à quelque chose de plus approprié pour une image de cette taille.

Alternativement, peut-être faire un profilage pour identifier ce qui est actuellement en train de prendre le temps de charger cette page .. il peut ne pas être l'image prenant la plupart du temps.

Vous pouvez effectuer un profilage simple avec une sortie de débogage et des TimeSpans, ou essayer quelque chose comme le profileur EQATEC.

+0

-je utiliser à chaque fois que chose quand charge silverlight la page, il doit analyser le XAML. Donc, quand j'ai un modèle au lieu d'un arbre, cela devrait prendre moins de temps pour l'analyser. Ai-je raison? –

+0

Cette optimisation particulière est une question intéressante. Comme nous le savons, Pivot charge des articles paresseux. Quelqu'un peut décider de regarder de plus près et de vérifier. Je suis un fan de profiling à moins qu'il y ait une optimisation pour certain que je sais produira un résultat. –