微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight新手入门教程主要介绍一些效果的基本实现和用法1

 


首先我也是刚刚自学一个礼拜,说实话自学真是好纠结,好多东西都要在网上这里找那里找的,所以我把找到的那些东西整理了一下。

推荐去这里下载更多的SilverlightDemo

http://www.cnblogs.com/webabcd/archive/2008/10/09/1307486.html

 

首先是配置Silverlight的环境,我的VS2010中文版,装了2010SP1,然后再安装这2个就可以了,先装第一个,然后第二个

第一部分   http://download.csdn.net/detail/qq873113580/4861371

第二部分 http://download.csdn.net/detail/qq873113580/4861523

上面的只是Silverlight4的东西,在后面如果要引用Blend里面的小编的时候最好把Silverlight5也装上

http://download.csdn.net/detail/htp111111sinacom/3912889

这样的话配置就搞定了

 

1,Rectangle长方行的一些用的东西

     stroke属性设置实线边框,strokeDashArray="5,2"虚线边框

     模糊边框,类似月亮的光晕

  <Rectangle RadiusX="5" RadiusY="5" Width="300" Height="200" Fill="#FFFF0000" stroke="Blue" strokeThickness="2">
	<Rectangle.Effect>
		<BlurEffect Radius="5" />
	</Rectangle.Effect>
  </Rectangle>

    Fill代表整个填充的颜色,BlurEffrct那里设置的光晕的大小,可以自己慢慢调,查看效果

    效果图,中间那个红色长方行的边框模糊的

   

  

   整个背景的渐变效果

  

<Rectangle Grid.Column="0" Grid.Row="0" Grid.RowSpan="2">
        <Rectangle.Fill>
              <LinearGradientBrush StartPoint="1,0" >
                        <GradientStop Color="#CC4E45" Offset="0.2"/>
                        <GradientStop Color="#B52D20" Offset="0.7"/>
              </LinearGradientBrush>
         </Rectangle.Fill>
</Rectangle>

代码可以放在任何需要的背景颜色或者前景色里面

offset,StartPoint,Color里面的可以自己去调

效果图如下

  

里面颜色的渐变就这这样

 

2,在App.XAML文件里面写全局样式,x:key类似ID,targettype代表这个样式在什么控件使用,我这里是用在Button控件上面

      <Application.Resources><!--样式必须写在这标签里面-->
               <Style x:Key="MenuButton" targettype="Button">

                      <Setter Property="Width" Value=“100”>

                       <Setter Property="Height" Value=“100”>

                        ........

                </Style>

        </Application.Resources>

       在Main.XAML里面调用样式

        <Button Style="{StaticResource MenuButton}"/>

        这个是调用Style的语法{StaticResource x:key的值}

        当然这个样式我们也可以自己定义一些模版,改变一下,就像上面那个面板的圆叉叉按钮一样

      

<Style x:Key="Close" targettype="Button">
       <Setter Property="Width" Value="50"/>
       <Setter Property="Height" Value="25"/>
       <Setter Property="Template">
       <Setter.Value>
           <ControlTemplate>
                 <Border Width="22" Height="22" CornerRadius="15">
                    <!--。。。。。。。。。。。。。。。。。。。。。。。 text的值随便去赋值,只不过R代表的图标是(X)-->
                    <TextBlock Foreground="#222" TextAlignment="Center" Text="r" FontSize="11" FontFamily="Webdings" VerticalAlignment="Center"/>
                    <Border.Background>
                        <RadialGradientBrush GradientOrigin="0.3,0.3">
                             <GradientStop Color="#FFF" Offset="0.15"/>
                             <GradientStop Color="#777" Offset="1"/>
                        </RadialGradientBrush>
                    </Border.Background>
                   </Border>
             </ControlTemplate>
       </Setter.Value>
      </Setter>
</Style>


 

 下面这个是一些菜单按钮自定义的一些样式,效果图,如果对于Silverlight有点理解的人话,不难看出自定义的模版,就是在样式里面设置Temple属性,然后在值里面嵌入一个

controlTemplate之后,里面的东西就是和Main界面的写法一样的,这些代码可以收集起来,用的时候直接粘贴,然后在根据自己的需求修改

<Application.Resources>
        <!--菜单按钮样式-->
        <Style x:Key="MenuButton" targettype="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate targettype="Button">----从这之后自己设置类似界面效果一样的
                        <Grid>
                            <Rectangle Width="75" Height="25" RadiusX="5" RadiusY="5" stroke="#5E1A14" Margin="10,0">
                                <Rectangle.Fill>
                                    <LinearGradientBrush StartPoint="1,0">
                                        <GradientStop Color="#BD5E54" Offset="0.0"/>
                                        <GradientStop Color="#90322A" Offset="0.9"/>
                                    </LinearGradientBrush>
                                </Rectangle.Fill>
                            </Rectangle>
                            <TextBlock FontSize="12" Text="{TemplateBinding Content}" Foreground="#F5F5F5" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold"/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Application.Resources>


 

 

        在后台CS文件里面动态给某个控件赋值样式属性

     

   btn.Style = App.Current.Resources["MenuButtonHover"] as Style;

      ["这里面的是Style的Key"]

     

     动态赋值颜色

     第一种是用取色软件取出来的颜色,显示的数字,分别输入在1,2,3,4的位置,但是取色软件所取色的只有前三个,所以第4个参数用0就好了

      grid.Background = new SolidColorBrush(Color.FromArgb(1,2,3,4));
      这种赋值是一般比较简单的

     grid.Background = new SolidColorBrush(Colors.Red);

    提示效果,类是HTML里面的Title效果,鼠标移动到控件上面去的时候,鼠标旁边显示一些提示

<Button ToolTipService.ToolTip="This is ToolTip text"/>第一种
 
第二种
 <Button Content="Button">
     <ToolTipService.ToolTip>
         <TextBlock Text="text"/>
   </ToolTipService.ToolTip>
 </Button>

两种方式,第一是直接,在标签里面加ToolTipService

另外一种是在标签里面使用

 

 

图片圆角效果
<Canvas x:Name="MainFrame" Background="AntiqueWhite" Margin="0,-200,600,0">
   <Canvas.Clip>
       <RectangleGeometry RadiusX="10" RadiusY="10" Rect="0,500" />
   </Canvas.Clip>
   ..下面是图片
</Canvas>	


图片标签嵌入进去之后,图片会圆角显示

 

 

动画教程

动态注册

           //实例化StoryBoard
            Storyboard storyBoard = new Storyboard();
            //设置动画轨迹
            DoubleAnimation doubleAnimationY = new DoubleAnimation();
            //执行时间
            doubleAnimationY.Duration = new Duration(TimeSpan.FromMilliseconds(500));
            //变量大小
            doubleAnimationY.To = 0;
            //绑定执行动画的对象
            Storyboard.SetTarget(doubleAnimationY,this.Sale(“这个参数是控件对象,也就是说给哪个注册动画”));
            //设置执行动画的属性
            Storyboard.SetTargetProperty(doubleAnimationY,new PropertyPath("Height(这个是控件的属性,比如我现在动画的方式改变高度)"));
            //添加动画
            storyBoard.Children.Add(doubleAnimationY);
            //执行动画
            storyBoard.Begin();


静态注册

<UserControl>
    <UserControl.Resources>
        <Storyboard x:Name="SlideOut">
            <DoubleAnimation Storyboard.TargetName="Slide" Storyboard.TargetProperty="这里的必须是Storyboard.TargetName对象的属性" Duration="00:00:00.50" To="200"/>
        </Storyboard>
	        <Storyboard x:Name="SlideIn">
            <DoubleAnimation Storyboard.TargetName="Slide" Storyboard.TargetProperty="这里的必须是Storyboard.TargetName对象的属性" Duration="00:00:00.50" To="0"/>
        </Storyboard>
    </UserControl.Resources>
</UserControl>
在事件里面调用
SlideIn.Begin();

这些代码直接写在你要注册的界面里面,注意标签的嵌套,要不然不会有效果调用的时候在代码里面,动画名字.Begin就好了

 

动静结合的动画,适用于创建一个动画,使用所有符合约定的控件

自定义全局动画,使用Behavior建议去看看这个有例子有代码

http://www.cnblogs.com/chengxingliang/archive/2012/03/19/2403331.html

当然前面的Behavior只是静态的,如果需要在后台代码里面动态调用可以去这里看看

http://geekswithblogs.net/SilverBlog/archive/2009/09/22/behaviors-how-to-attach-behavior-in-code-behind-silverlight-3.aspx

 

 

自定义计时器

主要原理是,利用动画的完成事件,然后继续调用自己,进入是死循环状态。

用户界面定义,并且注册完成事件
<UserControl.Resources>
    <Storyboard x:Name="timer" Completed="timer_Tick" />
</UserControl.Resources> 
在初始化的时候设置时间
timer.Duration = new TimeSpan(0,200); //200毫秒    
timer.Begin();
void timer_Tick(object sender,EventArgs e)
{
	//在这里处理定时器事件
	timer.Begin();

} 


利用Storyboard对象的Completed事件(动画结束之后触发)来模拟定时器。

计时器的类
dispatcherTimer timer = new dispatcherTimer();
timer.Tick += (sender,e) => {
 这里是重复的执行的一些代码

};
timer.Interval = new TimeSpan(0,1);
timer.Start();

 

改变DataGrid列表的头的样式,认下DataGrid是能修改Background样式的,所以要这样写

<Style x:Key="Heander" targettype="sdk:DataGridColumnHeader">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate targettype="sdk:DataGridColumnHeader">
                        <Grid Background="Black" Height="20"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>


 

这些都是我初学的时候遇到的一些问题,我把他记录下,也许对新人会有点帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐