• wp7天气预报源代码(四UI的制作)视觉状态


    上一节地址:http://www.cnblogs.com/wildfeng/archive/2012/03/25/2416388.html

    本次讲城市列表中控件的制作。

    44

    image此控件为用户自定义控件。制作布局和上一章讲的ForecastTile控件一样,只是在其基础上增加了视觉状态。imageimageimage

    image为3个状态添加了效果和曲线。image

    控件添加的样式生成的代码如下:

       1:  <UserControl
       2:      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       3:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       4:      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
       5:      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
       6:      mc:Ignorable="d"
       7:      x:Class="Weather.CityTile"
       8:      d:DesignWidth="184" d:DesignHeight="105">
       9:      <UserControl.Resources>
      10:          <Style x:Key="ButtonStyle1" TargetType="Button">
      11:              <Setter Property="Template">
      12:                  <Setter.Value>
      13:                      <ControlTemplate TargetType="Button">
      14:                          <Grid x:Name="LayoutRoot" Background="Transparent" RenderTransformOrigin="0.5,0.5"><!--变形的中心位置-->
      15:                              <Grid.RenderTransform>
      16:                                  <CompositeTransform/>
      17:                              </Grid.RenderTransform>
      18:                              <VisualStateManager.VisualStateGroups>         <!--管理器类型.状态组-->
      19:                                  <VisualStateGroup x:Name="CommonStates">
      20:                                      <VisualStateGroup.Transitions>    <!--视觉过渡转换,设置单个的状态组里不同状态切换时的动画效果-->
      21:                                          <VisualTransition GeneratedDuration="0:0:1" To="Pressed">
      22:                                              <VisualTransition.GeneratedEasingFunction>
      23:                                                  <BackEase EasingMode="EaseOut"/>
      24:                                              </VisualTransition.GeneratedEasingFunction>
      25:                                          </VisualTransition>
      26:                                          <VisualTransition GeneratedDuration="0:0:1" To="Normal">
      27:                                              <VisualTransition.GeneratedEasingFunction>
      28:                                                  <BackEase EasingMode="EaseOut"/>
      29:                                              </VisualTransition.GeneratedEasingFunction>
      30:                                          </VisualTransition>
      31:                                          <VisualTransition GeneratedDuration="0:0:1" To="MouseOver">
      32:                                              <VisualTransition.GeneratedEasingFunction>
      33:                                                  <BackEase EasingMode="EaseOut"/>
      34:                                              </VisualTransition.GeneratedEasingFunction>
      35:                                          </VisualTransition>
      36:                                      </VisualStateGroup.Transitions>
      37:                                      <VisualState x:Name="Disabled"/>  <!--设置单个的状态的动画效果-->
      38:                                      <VisualState x:Name="Normal"/>    <!--设置单个的状态的动画效果-->
      39:                                      <VisualState x:Name="MouseOver"/>  <!--设置单个的状态的动画效果-->
      40:                                      <VisualState x:Name="Pressed">     <!--设置单个的状态的动画效果-->
      41:                                          <Storyboard>
      42:                                              <DoubleAnimation Duration="0" To="0.8" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="LayoutRoot" d:IsOptimized="True"/>
      43:                                              <DoubleAnimation Duration="0" To="0.8" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="LayoutRoot" d:IsOptimized="True"/>
      44:                                          </Storyboard>
      45:                                      </VisualState>
      46:                                  </VisualStateGroup>
      47:                              </VisualStateManager.VisualStateGroups>
      48:                              <Image Source="/Weather;component/UserControl/base.png" Stretch="Fill"/>
      49:                              <Image Margin="90,-14,0,32" Source="{Binding cityWeatherIcon}"/>
      50:                              <TextBlock Text="{Binding cityTemperature}" FontSize="20"  Width="100" Margin="8,8,8,8" HorizontalAlignment="Stretch" VerticalAlignment="Bottom"/>
      51:                              <ContentPresenter HorizontalAlignment="Left" Height="40" Margin="8,8,0,0" VerticalAlignment="Top"/>
      52:                          </Grid>
      53:                      </ControlTemplate>
      54:                  </Setter.Value>
      55:              </Setter>
      56:              <Setter Property="FontSize" Value="26"/>
      57:              <Setter Property="Foreground" Value="White"/>
      58:          </Style>
      59:      </UserControl.Resources>
      60:      <Button Name="cityName" Content="{Binding cityName}" Style="{StaticResource ButtonStyle1}"/>
      61:  </UserControl>

    因为城市列表的控件个数是由独立存储中的数据动态加载的,赋值代码如下。

       1:  private void AddCity(string cityName, string cityTemperature, string WeatherIconPath) 
       2:          {
       3:              CityTileData cityData = new CityTileData();
       4:              cityData.cityTemperature = cityTemperature;
       5:              cityData.cityWeatherIcon = WeatherIconPath;
       6:              CityTile city = new CityTile();
       7:              city.DataContext = cityData;
       8:              city.cityName.Content = cityName;
       9:              city.Width = 184;
      10:              city.Height = 105;
      11:              city.Margin = new Thickness(15, 10, 15, 10);
      12:              wrapPanelCityList.Children.Add(city);
      13:              city.cityName.Click += new RoutedEventHandler(cityName_Click);
      14:          }
      15:   
      16:          void cityName_Click(object sender, RoutedEventArgs e)
      17:          {
      18:              NavigationService.Navigate(new Uri("/Loading.xaml?cityName=" + ((Button)sender).Content + "&AndGoPage=WeatherView", UriKind.RelativeOrAbsolute));
      19:          }

    再过20天考试完了,就毕业了。现在找个工作是真难,没有工作经验的应届毕业生没人要啊。做手机开发那么长时间了,连智能手机都买不起。诺基亚168C一直跟着我3年了。真是悲剧啊……求工作。感觉现在公司都很注重工作经验,技术再强也不如有工作经验。我想说的是应届毕业生里也是有能力的,工作好几年的也有能力不强的。

    作者QQ:29992379

    博客园原文地址:http://www.cnblogs.com/wildfeng/archive/2012/03/28/2421680.html

  • 相关阅读:
    在TreeView控件节点中显示图片
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1145 Hashing
    PAT 甲级 1145 Hashing
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1149 Dangerous Goods Packaging
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2457992.html
Copyright © 2020-2023  润新知