2010-12-14 34 views
0

私はそれぞれのPevotItemにリストボックスを持つPivotを持っています。 ListBoxのアイテムをアニメーション化するためのButtonコントロールを作成しました。それらのボタンのツリーがあります - それぞれに異なるイメージがあります。しかし、ボタンを1つ作成して画像ソースをバインドする方法があります。私はそれがページの読み込み時間を改善すると思う。windows phone 7、ボタンテンプレートイメージソースバインディング

私はどんな答えにも感謝します。ここで

は私のコードです:

<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> 

答えて

0

あなたは(ボタンの大きさの)一つの画像のロード時間を見つけている場合はページを開い遅延を引き起こすほど充実している、おそらく画像を低減することができますそのサイズの画像に適したものに変更することができます。

また、実際にこのページを読み込むための時間を取っているものを特定するためのプロファイリングを行うこともできます。時間の大部分を占めるイメージではない可能性があります。

デバッグ出力とTimeSpansを使用して単純なプロファイリングを行うことも、EQATECプロファイラのようなものを試すこともできます。

+0

私はSilverlightがページをロードするとき、それぞれの時間はそれがXAMLを解析するために持っている事に使用します。だから私は木の代わりに1つのテンプレートを持っているとき、それはそれを解析するために短い時間を取る必要があります。私は正しい? –

+0

その特定の最適化は興味深い質問です。私たちが知っているようにPivotは遅延アイテムを読み込みます。誰かがこれを詳しく見て検証することに決めます。私はプロファイリングのファンですが、私が結果を生むことがわかっている特定の最適化がない限り。 –