zoukankan      html  css  js  c++  java
  • Windows Phone 创建HubTile元素并重写其样式

           在最新的Windows Phone Toolkit中我们可以看到HubTile控件,这个控件可以允许我们添加生动的动态磁贴,其中可以包含图像,标题,信息,以及提示通知!并且也可以利用它的GroupTag属性进行分组!

     

           接下来我们来演示HubTile控件的使用方法,这里需要注意的是HubTile控件遵循的是Metro UI的设计风格,它的默认大小为173*173.

    如下:

       可以看出,通过HubTile控件,我们很方便的可以做出像桌面一样的动态磁贴元素!

     

            那么我们该如何使用HubTile呢?在使用之前,我们需要去http://silverlight.codeplex.com/下载最新的Windows Phone Toolkit DLL并添加到我们的项目引用中!之后我们便可以进行如下操作:

     

     

    一、XAML中添加命名空间:

      

    1 xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
    View Code

     

    二、在我们Xaml中编写HubTile代码

     

     1 <Grid Width="370" Height="537">
     2 
     3 
     4                 <Grid.RowDefinitions>
     5 
     6 
     7                     <RowDefinition Height="173*"/>
     8 
     9 
    10                     <RowDefinition Height="173*"/>
    11 
    12 
    13                     <RowDefinition Height="173*"/>
    14 
    15 
    16                 </Grid.RowDefinitions>
    17 
    18 
    19                 <Grid.ColumnDefinitions>
    20 
    21 
    22                     <ColumnDefinition Width="173*"/>
    23 
    24 
    25                     <ColumnDefinition Width="173*"/>
    26 
    27 
    28                 </Grid.ColumnDefinitions>
    29 
    30 
    31                 <StackPanel>
    32 
    33 
    34                     <toolkit:HubTile x:Name="btnPost1"  Source="/Img/1.png"  Title="房产领域" Message="关注黄金地段把握房产动向" />
    35 
    36 
    37                 </StackPanel>
    38 
    39 
    40                 <StackPanel Grid.Column="1" Grid.Row="0">
    41 
    42 
    43                     <toolkit:HubTile x:Name="btnPost2"  Source="/Img/2.png" Title="汽车领域" Message="爱车*就来这里" />
    44 
    45 
    46                 </StackPanel>
    47 
    48 
    49                 <StackPanel Grid.Column="0" Grid.Row="2">
    50 
    51 
    52                     <toolkit:HubTile x:Name="btnPost3"  Source="/Img/4.png" Title="婚庆领域" Message="秀秀我们的恩爱" />
    53 
    54 
    55                 </StackPanel>
    56 
    57 
    58                 <StackPanel Grid.Column="1" Grid.Row="2">
    59 
    60 
    61                     <toolkit:HubTile x:Name="btnPost4"  Source="/Img/5.png" Title="金融领域" Message="随时随地掌握金融动向"  />
    62 
    63 
    64                 </StackPanel>
    65 
    66 
    67                 <StackPanel Grid.ColumnSpan="2" Grid.Row="1">
    68 
    69 
    70                     <toolkit:HubTile x:Name="btnPost5"  Source="/Img/3.png" Title="专属定制" Message="定制属于自己公司的APP" Style="{StaticResource HubTileStyle1}" Width="358" />
    71 
    72 
    73                 </StackPanel>
    74 
    75 
    76             </Grid>
    View Code

      在HubTile属性中有几个属性是我们需要了解的:

     

      l  Title:设置或获取HubTile实例的标题

     

      l  Message:设置或获取HubTile实例的信息,用小字体展示

     

      l  Source:ImageSource类型,设置或获取HubTile实例的图片源

     

      l  DisplayNotification:布尔值,它确定新提示的布尔标识

     

      l  Notification:设置或获取提示的内容,用大字体展示

     

      l  IsFrozen:布尔值,设置或获取那些没有处于Animated的图像的布尔标识

     

      l  GroupTag:设置或获取HubTile组的group tag。当你添加了多个HubTile,这时你可以把它们归为一组

     

        可以看出、我在上面的最后一个HubTile中设置了Style属性。因为传统的HubTile大小是173*173的,即使改变的Width属性也不能改变HubTile元素的大小,所以我们要利用Blend来重写该HubTile的样式! 修改后的HubTile的样式如下:

      1 <phone:PhoneApplicationPage.Resources>
      2 
      3 
      4 
      5         <Style x:Key="HubTileStyle1" TargetType="toolkit:HubTile">
      6 
      7 
      8 
      9             <Setter Property="Height" Value="173"/>
     10 
     11 
     12 
     13             <Setter Property="Width" Value="173"/>
     14 
     15 
     16 
     17             <Setter Property="Background" Value="{StaticResource PhoneAccentBrush}"/>
     18 
     19 
     20 
     21             <Setter Property="Foreground" Value="#FFFFFFFF"/>
     22 
     23 
     24 
     25             <Setter Property="Template">
     26 
     27 
     28 
     29                 <Setter.Value>
     30 
     31 
     32 
     33                     <ControlTemplate TargetType="toolkit:HubTile">
     34 
     35 
     36 
     37                         <StackPanel x:Name="Viewport" Height="173" Width="358">
     38 
     39 
     40 
     41                             <StackPanel.Resources>
     42 
     43 
     44 
     45                                 <CubicEase x:Key="HubTileEaseOut" EasingMode="EaseOut"/>
     46 
     47 
     48 
     49                             </StackPanel.Resources>
     50 
     51 
     52 
     53                             <StackPanel.Projection>
     54 
     55 
     56 
     57                                 <PlaneProjection x:Name="ViewportProjection" CenterOfRotationY="0.25"/>
     58 
     59 
     60 
     61                             </StackPanel.Projection>
     62 
     63 
     64 
     65                             <VisualStateManager.VisualStateGroups>
     66 
     67 
     68 
     69                                 <VisualStateGroup x:Name="ImageStates">
     70 
     71 
     72 
     73                                     <VisualStateGroup.Transitions>
     74 
     75 
     76 
     77                                         <VisualTransition x:Name="ExpandedToSemiexpanded" From="Expanded" GeneratedDuration="0:0:0.85" To="Semiexpanded">
     78 
     79 
     80 
     81                                             <Storyboard>
     82 
     83 
     84 
     85                                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="TitlePanel">
     86 
     87 
     88 
     89                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.0" Value="-173.0"/>
     90 
     91 
     92 
     93                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.85" Value="-79.0"/>
     94 
     95 
     96 
     97                                                 </DoubleAnimationUsingKeyFrames>
     98 
     99 
    100 
    101                                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="RotationX" Storyboard.TargetName="ViewportProjection">
    102 
    103 
    104 
    105                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.0" Value="0.0"/>
    106 
    107 
    108 
    109                                                 </DoubleAnimationUsingKeyFrames>
    110 
    111 
    112 
    113                                             </Storyboard>
    114 
    115 
    116 
    117                                         </VisualTransition>
    118 
    119 
    120 
    121                                         <VisualTransition x:Name="SemiexpandedToCollapsed" From="Semiexpanded" GeneratedDuration="0:0:0.85" To="Collapsed">
    122 
    123 
    124 
    125                                             <Storyboard>
    126 
    127 
    128 
    129                                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="TitlePanel">
    130 
    131 
    132 
    133                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.0" Value="-79.0"/>
    134 
    135 
    136 
    137                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.85" Value="0.0"/>
    138 
    139 
    140 
    141                                                 </DoubleAnimationUsingKeyFrames>
    142 
    143 
    144 
    145                                             </Storyboard>
    146 
    147 
    148 
    149                                         </VisualTransition>
    150 
    151 
    152 
    153                                         <VisualTransition x:Name="CollapsedToExpanded" From="Collapsed" GeneratedDuration="0:0:0.85" To="Expanded">
    154 
    155 
    156 
    157                                             <Storyboard>
    158 
    159 
    160 
    161                                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="TitlePanel">
    162 
    163 
    164 
    165                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.0" Value="0.0"/>
    166 
    167 
    168 
    169                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.85" Value="-173.0"/>
    170 
    171 
    172 
    173                                                 </DoubleAnimationUsingKeyFrames>
    174 
    175 
    176 
    177                                             </Storyboard>
    178 
    179 
    180 
    181                                         </VisualTransition>
    182 
    183 
    184 
    185                                         <VisualTransition x:Name="ExpandedToFlipped" From="Expanded" GeneratedDuration="0:0:0.85" To="Flipped">
    186 
    187 
    188 
    189                                             <Storyboard>
    190 
    191 
    192 
    193                                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="TitlePanel">
    194 
    195 
    196 
    197                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.0" Value="-173.0"/>
    198 
    199 
    200 
    201                                                 </DoubleAnimationUsingKeyFrames>
    202 
    203 
    204 
    205                                                 <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Image">
    206 
    207 
    208 
    209                                                     <DiscreteObjectKeyFrame KeyTime="0:0:0.185" Value="Collapsed"/>
    210 
    211 
    212 
    213                                                 </ObjectAnimationUsingKeyFrames>
    214 
    215 
    216 
    217                                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="RotationX" Storyboard.TargetName="ViewportProjection">
    218 
    219 
    220 
    221                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.0" Value="0.0"/>
    222 
    223 
    224 
    225                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.85" Value="180.0"/>
    226 
    227 
    228 
    229                                                 </DoubleAnimationUsingKeyFrames>
    230 
    231 
    232 
    233                                             </Storyboard>
    234 
    235 
    236 
    237                                         </VisualTransition>
    238 
    239 
    240 
    241                                         <VisualTransition x:Name="FlippedToExpanded" From="Flipped" GeneratedDuration="0:0:0.85" To="Expanded">
    242 
    243 
    244 
    245                                             <Storyboard>
    246 
    247 
    248 
    249                                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="TitlePanel">
    250 
    251 
    252 
    253                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.0" Value="-173.0"/>
    254 
    255 
    256 
    257                                                 </DoubleAnimationUsingKeyFrames>
    258 
    259 
    260 
    261                                                 <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Image">
    262 
    263 
    264 
    265                                                     <DiscreteObjectKeyFrame KeyTime="0:0:0.185" Value="Visible"/>
    266 
    267 
    268 
    269                                                 </ObjectAnimationUsingKeyFrames>
    270 
    271 
    272 
    273                                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="RotationX" Storyboard.TargetName="ViewportProjection">
    274 
    275 
    276 
    277                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.0" Value="180.0"/>
    278 
    279 
    280 
    281                                                     <EasingDoubleKeyFrame EasingFunction="{StaticResource HubTileEaseOut}" KeyTime="0:0:0.85" Value="360.0"/>
    282 
    283 
    284 
    285                                                 </DoubleAnimationUsingKeyFrames>
    286 
    287 
    288 
    289                                             </Storyboard>
    290 
    291 
    292 
    293                                         </VisualTransition>
    294 
    295 
    296 
    297                                     </VisualStateGroup.Transitions>
    298 
    299 
    300 
    301                                     <VisualState x:Name="Expanded">
    302 
    303 
    304 
    305                                         <Storyboard>
    306 
    307 
    308 
    309                                             <DoubleAnimation Duration="0" To="-173.0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="TitlePanel"/>
    310 
    311 
    312 
    313                                             <DoubleAnimation Duration="0" To="0.0" Storyboard.TargetProperty="RotationX" Storyboard.TargetName="ViewportProjection"/>
    314 
    315 
    316 
    317                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Image">
    318 
    319 
    320 
    321                                                 <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
    322 
    323 
    324 
    325                                             </ObjectAnimationUsingKeyFrames>
    326 
    327 
    328 
    329                                         </Storyboard>
    330 
    331 
    332 
    333                                     </VisualState>
    334 
    335 
    336 
    337                                     <VisualState x:Name="Semiexpanded">
    338 
    339 
    340 
    341                                         <Storyboard>
    342 
    343 
    344 
    345                                             <DoubleAnimation Duration="0" To="-79.0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="TitlePanel"/>
    346 
    347 
    348 
    349                                         </Storyboard>
    350 
    351 
    352 
    353                                     </VisualState>
    354 
    355 
    356 
    357                                     <VisualState x:Name="Collapsed"/>
    358 
    359 
    360 
    361                                     <VisualState x:Name="Flipped">
    362 
    363 
    364 
    365                                         <Storyboard>
    366 
    367 
    368 
    369                                             <DoubleAnimation Duration="0" To="-173.0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="TitlePanel"/>
    370 
    371 
    372 
    373                                             <DoubleAnimation Duration="0" To="180.0" Storyboard.TargetProperty="RotationX" Storyboard.TargetName="ViewportProjection"/>
    374 
    375 
    376 
    377                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Image">
    378 
    379 
    380 
    381                                                 <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Collapsed"/>
    382 
    383 
    384 
    385                                             </ObjectAnimationUsingKeyFrames>
    386 
    387 
    388 
    389                                         </Storyboard>
    390 
    391 
    392 
    393                                     </VisualState>
    394 
    395 
    396 
    397                                 </VisualStateGroup>
    398 
    399 
    400 
    401                             </VisualStateManager.VisualStateGroups>
    402 
    403 
    404 
    405                             <Grid x:Name="TitlePanel" Height="346" RenderTransformOrigin="0.5,0.5" Width="358">
    406 
    407 
    408 
    409                                 <Grid.RowDefinitions>
    410 
    411 
    412 
    413                                     <RowDefinition/>
    414 
    415 
    416 
    417                                     <RowDefinition/>
    418 
    419 
    420 
    421                                 </Grid.RowDefinitions>
    422 
    423 
    424 
    425                                 <Grid.RenderTransform>
    426 
    427 
    428 
    429                                     <CompositeTransform/>
    430 
    431 
    432 
    433                                 </Grid.RenderTransform>
    434 
    435 
    436 
    437                                 <Border Background="{TemplateBinding Background}" Grid.Row="0">
    438 
    439 
    440 
    441                                     <TextBlock Foreground="{TemplateBinding Foreground}" FontSize="41" FontFamily="{StaticResource PhoneFontFamilyNormal}" LineStackingStrategy="BlockLineHeight" LineHeight="39" Margin="10,0,0,6" TextWrapping="NoWrap" Text="{TemplateBinding Title}" VerticalAlignment="Bottom"/>
    442 
    443 
    444 
    445                                 </Border>
    446 
    447 
    448 
    449                                 <Grid x:Name="BackPanel" Background="{TemplateBinding Background}" Height="173" Grid.Row="1" Width="358">
    450 
    451 
    452 
    453                                     <Grid.Projection>
    454 
    455 
    456 
    457                                         <PlaneProjection CenterOfRotationY="0.5" RotationX="180"/>
    458 
    459 
    460 
    461                                     </Grid.Projection>
    462 
    463 
    464 
    465                                     <Grid.RowDefinitions>
    466 
    467 
    468 
    469                                         <RowDefinition Height="*"/>
    470 
    471 
    472 
    473                                         <RowDefinition Height="Auto"/>
    474 
    475 
    476 
    477                                     </Grid.RowDefinitions>
    478 
    479 
    480 
    481                                     <TextBlock x:Name="NotificationBlock" Foreground="{TemplateBinding Foreground}" FontSize="{StaticResource PhoneFontSizeLarge}" FontFamily="{StaticResource PhoneFontFamilyNormal}" LineStackingStrategy="BlockLineHeight" LineHeight="32" Margin="8,8,0,6" Grid.Row="0" TextWrapping="NoWrap" Text="{TemplateBinding Notification}"/>
    482 
    483 
    484 
    485                                     <TextBlock x:Name="MessageBlock" Foreground="{TemplateBinding Foreground}" FontSize="{StaticResource PhoneFontSizeNormal}" FontFamily="{StaticResource PhoneFontFamilyNormal}" LineStackingStrategy="BlockLineHeight" LineHeight="23.333" Margin="10,10,10,6" Grid.Row="0" TextWrapping="Wrap" Text="{TemplateBinding Message}"/>
    486 
    487 
    488 
    489                                     <TextBlock x:Name="BackTitleBlock" Foreground="{TemplateBinding Foreground}" FontSize="{StaticResource PhoneFontSizeNormal}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="10,0,0,6" Grid.Row="1" TextWrapping="NoWrap" VerticalAlignment="Bottom"/>
    490 
    491 
    492 
    493                                 </Grid>
    494 
    495 
    496 
    497                                 <Image x:Name="Image" Height="173" Grid.Row="1" Source="{TemplateBinding Source}" Stretch="UniformToFill" Width="358"/>
    498 
    499 
    500 
    501                             </Grid>
    502 
    503 
    504 
    505                         </StackPanel>
    506 
    507 
    508 
    509                     </ControlTemplate>
    510 
    511 
    512 
    513                 </Setter.Value>
    514 
    515 
    516 
    517             </Setter>
    518 
    519 
    520 
    521         </Style>
    522 
    523 
    524 
    525     </phone:PhoneApplicationPage.Resources>
    View Code

    当我们引用了上面的样式之后我们预览下我们的整体效果如下,当然实际中这些小磁贴是会动的:

                    

  • 相关阅读:
    MongoDB导入数据库异常——Failed: cannot decode array into a D
    Unity中实现文字竖排的方法
    MongoDB基础
    基于Vuforia的Unity增强现实应用开发
    Windows设置自动关机
    开源软件的License科普
    87版《红楼梦》与原著回目对应表
    WCF初探-23:WCF中使用Message类(下)
    WCF初探-22:WCF中使用Message类(上)
    WCF初探-21:WCF终结点(endpoint)
  • 原文地址:https://www.cnblogs.com/wangchenran/p/3117191.html
Copyright © 2011-2022 走看看