- 浏览: 507353 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (329)
- [发布至博客园首页] (12)
- [随笔分类][01] .Net X (59)
- [随笔分类][20] Architecture (16)
- [随笔分类][21] Developer Logs (13)
- [网站分类]Windows 7 (1)
- [随笔分类][13] Oracle & .Net (7)
- [随笔分类][16] Love in China (14)
- [随笔分类][15] Development Tools (20)
- [随笔分类][18] Windows Phone (12)
- [随笔分类][12] Design & Pattern (17)
- [网站分类].NET新手区 (22)
- [网站分类]首页候选区 (2)
- [随笔分类][08] Windows (Server) (13)
- [随笔分类][02] CSLA.Net (3)
- [随笔分类][10] jQuery & javaScript (10)
- [随笔分类][11] SQL Server (4)
- [随笔分类][22] Enterprise Logs (3)
- [随笔分类][03] News (9)
- [随笔分类][19] Quality Assurance (2)
- [随笔分类][05] Silverlight (20)
- [随笔分类][14] Google Earth & .Net (6)
- [网站分类]非技术区 (9)
- [随笔分类][07] WWF (2)
- [随笔分类][04] SharePoint (1)
- [随笔分类][20] Analysis & Design (36)
- [随笔分类][06] WCF (5)
- [随笔分类][12] Architecture (1)
- [随笔分类][09] WPF (0)
- [随笔分类][17] VStudio & Expression (5)
最新评论
-
zhangyy130:
你好,我关于第二段的那个表视图、模型与图这三者的关系我没有看明 ...
UML模型的组成 -
guji528:
谢谢分享!
Enterprise Architect 基础应用 -
studentsky:
好文章,图文并茂!
WCF 第一个用 Visual Studio 2010 创建的WCF服务 -
chen975311486:
用哪个工具画的????
UML中对关系的描述 (二) -
frankies:
继续学习中。。
UML 交互概述图
在使用Silverlight的样式的时候感觉非常好,以前在HTML上很难实现的效果在这里都变的如此简单。
属性样式
控件的属性样式好比CSS的Class功能定义,是用来统一定义和维护控件属性的方式,控件属性样式根据生命的位置不同分为三种范围的作用域
全局样式
全局样式声明在App.Xaml 文件中具有整个项目的使用范围能力
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Sample.App" > <Application.Resources> <!--样式定义位置,定义在这里可以让整个项目都可以访问到这个样式的定义--> </Application.Resources> </Application>
局部样式
局部样式使用<UserControl.Resources> 这个元素定义,具有文件级别的访问范围
<!--定义用户控件资源-->
<UserControl.Resources>
<!--定义按钮样式1 TargetType 代表适合的控件类型 这里是Button控件-->
<Style x:Key="button1" TargetType="Button">
<!--背景色 Background = Black-->
<Setter Property="Background" Value="Black"/>
<!--字号-->
<Setter Property="FontSize" Value="24"/>
<!--字颜色-->
<Setter Property="Foreground" Value="Blue"/>
<!--字间距-->
<Setter Property="Margin" Value="20"/>
</Style>
</UserControl.Resources>
<!--应用样式1的按钮-->
<Button Content="兰色" Width="150" Height="80"
Style="{StaticResource button1}" />
内部样式
内部样式代表在元素的级别上来生命的资源,具有这个容器或者控件的使用范围
<Button Content="红色" Width="150" Height="80">
<Button.Style>
<!--定义按钮样式3-->
<Style TargetType="Button">
<!--背景色-->
<Setter Property="Background" Value="Red"/>
<!--字号-->
<Setter Property="FontSize" Value="24"/>
<!--字颜色-->
<Setter Property="Foreground" Value="Red"/>
<!--字间距-->
<Setter Property="Margin" Value="20"/>
</Style>
</Button.Style>
</Button>
样式支持继承的方式访问,在父容器元素定义的样式其内部的包含的控件也可以使用这个样式,下面的Button就使用了其父容器控件中的资源。
<Grid x:Name="LayoutRoot" Background="White">
<!--定义Grid控件的资源-->
<Grid.Resources>
<Style x:Key="button" TargetType="Button">
<Setter Property="Width" Value="260"/>
<Setter Property="Height" Value="160"/>
<Setter Property="FontSize" Value="26" />
<Setter Property="Content" Value="应用父级样式"/>
</Style>
</Grid.Resources>
<!--应用父级样式的按钮-->
<Button Style="{StaticResource button}"></Button>
</Grid>
控件模板
控件模板用于个性化的去定义控件的外观,可以使用Blend或者是手动去使用XAML编写组合一个你所想要的控件外观,比如圆形的按钮等等,同时这个控件本身依然具有控件本身的功能作用。
他的定义是Style的一个扩展,只要在Style中添加Property="Template" 的Setter 标记 并在Value中定义即可
<UserControl.Resources>
<!--定义样式1-->
<Style x:Key="MyButton1" TargetType="Button">
<!--使用模板属性-->
<Setter Property="Template"> ----------代表索要定义的是一个模板
<Setter.Value> ---------- 这个标记中可以包含模板定义
<!--定义模板1-->
<ControlTemplate TargetType="Button"> -------模板的适用与Button,这个元素的内部开始定义这个Button模板的外观
<Grid Cursor="Hand" Margin="20">
<Ellipse Width="150" Height="100"
HorizontalAlignment="Center"
VerticalAlignment="Center"> -----椭圆形
<Ellipse.Fill> -----填充使用黄色到白色的渐变
<RadialGradientBrush>
<GradientStop Color="Gold"
Offset="1"/>
<GradientStop Color="White"
Offset="0"/>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
<!--使用TemplateBinding-->
<TextBlock FontSize="24"
Foreground="Blue"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{TemplateBinding Content}" /> ----文本的定义使用TextBlock标记,并将Text 与 具体的Button 的Content 属性 的值关联起来
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<StackPanel Width="400" Height="300"
HorizontalAlignment="Center"
Orientation="Horizontal"
VerticalAlignment="Center"
Background="White">
<!--应用样式1-->
<Button Style="{StaticResource MyButton1}" Content="我的控件" /> ----使用样式的名称即可
<!--应用样式1-->
<Button Style="{StaticResource MyButton1}" Content="按钮内容" />
</StackPanel>
视觉状态
视觉状态也是Style的一个扩展,在Silverlight 的样式中控件在某个状态下的不同效果也是可以定义的,比如鼠标在按钮悬停时候按钮的样子啊,按下按钮的样子啊等等。
当然和Style一样,每种按钮都有不同的属性也会有不同的状态。那么我们如何得知控件有那些状态呢,方法很简单,只要 右键选中一个控件,转到定义,在元数据里面就会看到他的状态都有那些了。
// Summary: // Represents a button control. [TemplateVisualState(Name = "Focused", GroupName = "FocusStates")] [TemplateVisualState(Name = "Normal", GroupName = "CommonStates")] [TemplateVisualState(Name = "MouseOver", GroupName = "CommonStates")] [TemplateVisualState(Name = "Pressed", GroupName = "CommonStates")] [TemplateVisualState(Name = "Disabled", GroupName = "CommonStates")] [TemplateVisualState(Name = "Unfocused", GroupName = "FocusStates")] public class Button : ButtonBase
上面的特性就是视觉状态了,我们就要重新定义这些Name的状态。
<UserControl.Resources>
<!--定义样式标记-->
<Style x:Key="buttonVSM" TargetType="Button">
<!--定义样式属性-->
<Setter Property="Foreground" Value="Yellow"/>
<Setter Property="Template">
<Setter.Value>
<!--定义控件模板-->
<ControlTemplate TargetType="Button">
<Border CornerRadius="10" BorderBrush="Black"
BorderThickness="3" Width="240" Height="80"
x:Name="RootElement">
<Border.Background>
<!--定义背景画刷-->
<SolidColorBrush
x:Name="BorderBrush"
Color="Green"/>
</Border.Background>
<!--视觉状态管理组-->
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<!--定义状态迁移-->
<VisualStateGroup.Transitions> ----------迁移代表不同状态之间切换的过程
<!--从Normal到MouseOver迁移间隔时间-->
<VisualTransition To="MouseOver"
GeneratedDuration="0:0:0.5" />
<!--从Pressed到MouseOver的迁移间隔时间-->
<VisualTransition From="Pressed"
To="MouseOver"
GeneratedDuration="0:0:0.01" />
<!--从MouseOver到Normal的迁移-->
<VisualTransition From="MouseOver"
To="Normal"
GeneratedDuration="0:0:1.5">
<Storyboard>
<!--使用关键帧动画改变按钮背景色-->
<ColorAnimationUsingKeyFrames
Storyboard.TargetProperty="Color"
Storyboard.TargetName="BorderBrush">
<ColorAnimationUsingKeyFrames.KeyFrames>
<LinearColorKeyFrame
Value="Blue" KeyTime="0:0:0.5" /> ---- 0.5 秒Blue 色
<LinearColorKeyFrame
Value="Yellow" KeyTime="0:0:1" /> ---1秒 Yellow色
<LinearColorKeyFrame
Value="Green" KeyTime="0:0:1.5" /> ----1.5秒Green色
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
<!--按钮普通状态-->
<VisualState x:Name="Normal" />
<!--鼠标经过按钮的状态-->
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation
Storyboard.TargetName="BorderBrush"
Storyboard.TargetProperty="Color"
To="Red" /> ----动态将BorderBrush 的Color 属性值过度到Red
</Storyboard>
</VisualState>
<!--按钮按下状态-->
<VisualState x:Name="Pressed">
<Storyboard >
<ColorAnimation
Storyboard.TargetName="BorderBrush"
Storyboard.TargetProperty="Color"
To="Transparent" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<!--显示按钮文本-->
<ContentPresenter
HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<!--按钮对象-->
<Button Style="{StaticResource buttonVSM}"
FontSize="24" Background="Red"
Content="视觉状态按钮"/>
</Grid>
发表评论
-
Silverlight 从入门到精通
2009-12-31 21:12 1235Silverlight 是一种新的 Web 呈现 ... -
WCF 及 Silverlight 中使用 Session
2010-01-13 10:11 1867WCF 中 使用 Session 1.标记WCF服务开启 ... -
Silverlight 第一步 快速的掌握页面布局,做一个博客的布局实例
2010-02-12 21:34 1474如果你刚开始学习Silverlight 那么真为你高兴你可以绕 ... -
Silverlight 按钮类控件和选择控件 示例
2010-02-13 14:50 1503下面我们开始走一边Silverlight中的基础控件。 使用 ... -
Silverlight 信息显示与编辑控件 示例
2010-02-14 12:29 1687Silverlight 真是一个不错的开发平台,想到即将发布的 ... -
Silverlight 数据显示和布局控件 示例
2010-02-14 18:41 1911数据显示控件 DataGrid DataGrid 是最基础的数 ... -
Silverlight Object 标签属性介绍、初始化参数的设置和获取、客户端系统信息获取
2010-02-15 19:02 1586HTML元素属性介绍 Silverlight 作为网页的一部 ... -
Silverlight 与HTML元素交互操作
2010-02-15 19:32 1368Silverlight 中的HtmlPage 和 HtmlE ... -
Silverlight 与javaScript互操作
2010-02-15 20:12 1472Silverlight 调用 javaScript ... -
Silverlight 中的WebClient 与 WebRequest 示例
2010-02-16 16:48 1899WebClient public partial clas ... -
Silverlight 客户端本地消息通讯
2010-02-17 13:22 1059在Silverlight 3 中添加了客户端不同应用程序之间的 ... -
Silverlight Isolated Storage 独立存储
2010-02-17 18:42 2190Silverlight 独立存储 好比Cookie一样,可以 ... -
Silverlight 程序库缓存与打开/保存文件对话框
2010-02-17 19:12 1927程序库缓存 我们都知道Xap是Silverlight 初始下 ... -
silverlight click 事件委托是 RoutedEventHandler
2008-12-01 09:46 1712cellBtn.Click += new RoutedEven ... -
silverlight 2 系统对话框
2008-12-01 09:47 914silverlight 2 系统对话框 Code< ... -
silverlight, 双击事件
2008-12-01 10:22 1172Silverlight 没有提供双 ... -
转帖-如何在不联网的情况下安装 Silverlight Tools
2009-01-05 13:54 1031首先,在安装之前,将你的系统和VS2008更新到最新的 SP1 ... -
Silverlight 开发 GIS Google Maps
2009-06-01 17:36 1715Silverlight 作为地理信息系统的开发平台,与多种图源 ... -
Silverlight Tools 安装失败 解决办法
2009-06-18 20:02 19101.Silverlight Tools 安装失败,可以尝试将注 ...
相关推荐
在Silverlight中,控件模板(ControlTemplate)定义了控件的外观和布局,包括它的子元素、样式以及它们的相互关系。通过自定义控件的模板,我们可以完全改变控件的视觉呈现,而不影响其内部逻辑。这为开发者提供了极...
控件模板定义了控件的外观和布局。在`ControlTemplate`中,你可以使用各种元素如`Grid`、`StackPanel`、`Border`等,以及触发器和转换器来改变控件的视觉表现。 **步骤 4:创建默认控件模板** 每个控件都需要一个...
此外,学习这个源码可以帮助开发者了解Silverlight中控件生命周期、样式和模板的工作原理,以及如何通过数据绑定将控件与业务逻辑连接起来。对于初学者来说,这是一个很好的实践案例,可以加深对Silverlight编程的...
通过这个"Silverlight美化TabControl控件演示"项目,开发者可以学习到如何利用Silverlight的灵活性和强大功能来提升用户体验,同时也能掌握更多关于XAML、样式、模板和动画的知识,这对于开发高质量的Silverlight...
1. **控件模板(ControlTemplate)**:使用XAML定义控件的视觉结构,包括各个部分的布局和样式。这允许我们自定义控件的外观,使其符合小米时间选择器的设计。 2. **数据绑定(Data Binding)**:将控件的属性与...
为了实现更高级的功能,开发者可能还会利用数据绑定将菜单项与数据源关联,或者使用样式和模板来自定义菜单的视觉效果。这包括修改菜单项的背景色、边框、字体样式等,甚至可以创建完全自定义的布局。 总之,...
这个过程涉及到自定义控件模板和图像资源的使用。 首先,`TreeView`的默认样式和模板定义了其各个部分的外观,包括那个用于表示展开/折叠状态的黑三角。为了改变这个图标,我们需要修改`TreeViewItem`的模板。`...
《Silverlight左侧导航源文件与样式模板解析》 在信息技术高速发展的今天,用户界面的设计与交互体验成为衡量软件质量的重要标准之一。Silverlight,作为微软推出的一种强大的RIA(Rich Internet Application)开发...
2. **模板(Template)**:控件模板包括数据模板(DataTemplate)和控件模板(ControlTemplate)。数据模板用来定义如何显示数据对象,而控件模板则可以完全重绘控件的内部结构。例如,通过修改Button的控件模板,...
总结,"好看的Silverlight Datagrid样式"涉及到的内容广泛,包括但不限于DataGrid控件的基础知识、样式和模板的定制、DataGridTextColumn的使用以及如何通过动画和性能优化提升用户体验。通过对这些知识点的掌握和...
7. **样式和模板**:为了实现自定义的视觉效果,开发者可以使用XAML语言定义控件的样式和模板。通过设置Background、Foreground、BorderBrush等属性,以及定义ControlTemplate,可以实现独特的外观设计。 8. **性能...
- **模板(Template)**:控件样式通常涉及数据模板(DataTemplate)和控件模板(ControlTemplate),它们定义了控件的视觉结构和行为。 - **基于类的样式(Class-Based Styles)**:通过设置`TargetType`属性,可以...
-- 控件模板内容 --> ``` 5. **测试和调试**:最后,在实际项目中使用你的自定义控件,确保它在不同环境和场景下都能正常工作。Visual Studio提供了丰富的调试工具,帮助你找出并修复潜在问题。 通过以上...
- **自定义模板**:Silverlight允许开发者自定义控件模板,通过修改模板,开发者可以改变控件的外观和行为。 - **动画效果**:Windows 7风格的控件可能包含平滑的过渡和动画效果,比如按钮按下时的凹陷效果,滑块...
1. App.xaml:应用级别的资源定义,包括主题样式和控件模板。 2. MainPage.xaml:日历插件的主界面,包含XAML布局和C#逻辑。 3. CalendarControl.cs:自定义日历控件的C#类,实现各种功能和API。 4. StyleResources....
在本文中,我们将深入探讨Silverlight 4中的菜单控件,以及如何利用ContentControl.Content属性来实现一个灵活的自定义菜单。Silverlight是一种强大的技术,它允许开发人员创建丰富的、交互式的Web应用程序,而菜单...
2. **外观**:包括样式和模板,以及VisualStateManager(VSM),用于控制控件的不同视觉状态。 3. **事件**:控件通常会引发事件,这些事件可以沿着控件树冒泡,允许其他组件响应。 【创建Silverlight控件的方法】...
扩展控件的方法主要有两种:一是创建控件模板(ControlTemplate),改变其外观;二是创建附加行为(Attached Behavior),增加新的功能。 1. 创建控件模板: 使用XAML,我们可以为ComboBox创建一个新的...
在Silverlight中,开发者可以通过自定义模板和样式来实现这样的控件风格,通过XAML代码定义控件的外观和行为。 "源码"意味着我们有机会查看和学习这些控件风格的具体实现,这对于开发者来说是一份宝贵的资源。通过...