用XAML做网页!!—导航栏

简介:

 

这次要完成的是导航栏,这是页面中比较复杂的区域。

 

先在 Microsoft Expression Design 中绘制导航栏的背景图案:

 

 

 

导出为barback.xaml,增加其填充规则:

 

 

 

ViewportUnits="Absolute" Viewport="0,0,15,13.86" TileMode="Tile"

 

 

完成后的代码如下:

 

 

Code

 

 

Page资源中引用:

 

 

 

< ResourceDictionary  Source ="barback.xaml" />

 

 

Channel区块的背景改为“{StaticResource barback}”:

 

 

接下来要在Channel中添加一个Grid并实现如下布局:

 

 

代码如下:

 

 

< Grid >

< Grid.ColumnDefinitions >

< ColumnDefinition  Width ="28"   />

< ColumnDefinition  Width ="Auto"   />

< ColumnDefinition  Width ="Auto"   />

< ColumnDefinition  Width ="Auto"   />

< ColumnDefinition  Width ="Auto"   />

< ColumnDefinition  Width ="Auto"   />

< ColumnDefinition  Width ="Auto"   />

< ColumnDefinition  Width ="Auto"   />

< ColumnDefinition  Width ="*"   />

< ColumnDefinition  Width ="28"   />

</ Grid.ColumnDefinitions >

< Grid.Background >

< LinearGradientBrush  EndPoint ="0.5,1"  StartPoint ="0.5,0" >

< GradientStop  Color ="#26000000"  Offset ="0.95" />

< GradientStop  Color ="#00000000"  Offset ="0.8" />

< GradientStop  Color ="#00000000"  Offset ="0.2" />

< GradientStop  Color ="#26000000"  Offset ="0" />

</ LinearGradientBrush >

</ Grid.Background >

</ Grid >

 

它的背景是不透明度很低的黑色渐变,用于实现上下边缘处的阴影效果。

 

现在我们要在Grid中加入的是一条横向填满整个Grid1像素白线,它紧贴Grid底部:

 

 

< Path  VerticalAlignment ="Bottom"  Grid.ColumnSpan ="10"  Height ="1"  Stretch ="Fill"  StrokeLineJoin ="Round"  Stroke ="#FFFFFFFF"  Data ="F1 M 52,307L 252.003,307" />

 

 

这是干什么用的呢?我们把画面放大到700%,看看我们将要实现的效果:

 

 

请看我鼠标所指的位置,这就是那条线,我们实现这个标签效果的原理就是:未选中的标签向下产生1像素外边距,从而使这条白线显示出来;而被选中的标签向下为0像素外边距,就盖住了这条白线,产生与页面中部内容区接合的效果。

 

OK,了解了原理先不着急实现,现在再加入两个矩形来产生左右边缘的阴影效果:

 

 

< Rectangle  Opacity ="0.7"  Grid.Column ="0"  Width ="28"   Fill =" {StaticResource ShadowLeft} " />

< Rectangle  Opacity ="0.7"  Grid.Column ="9"  Width ="28"   Fill =" {StaticResource ShadowRight} " />

 

 

然后我们就来做这个标签了,对于这种有状态的单选标签,我个人认为最合理的应该就是使用 RadioButton 来实现吧,虽然他们的长相大相径庭,但是WPF绝妙的样式定义功能就是可以这样化腐朽为神奇滴。

 

先来添加一堆 RadioButton 

 

 

 

< RadioButton  IsChecked ="True"  VerticalAlignment ="Bottom"  Grid.Column ="1" > 简介 </ RadioButton >

< RadioButton  VerticalAlignment ="Bottom"  Grid.Column ="2" > 使用指南 </ RadioButton >

< RadioButton  VerticalAlignment ="Bottom"  Grid.Column ="3" > 更新及下载 </ RadioButton >

< RadioButton  VerticalAlignment ="Bottom"  Grid.Column ="4" > 注册 </ RadioButton >

< RadioButton  VerticalAlignment ="Bottom"  Grid.Column ="5" > 广告投放 </ RadioButton >

< RadioButton  VerticalAlignment ="Bottom"  Grid.Column ="6" > 海外推广合作 </ RadioButton >

< RadioButton  VerticalAlignment ="Bottom"  Grid.Column ="7" > 关于 </ RadioButton >

 

 

每个RadioButton 占据一列,横向排开,现在的效果嘛...是这样:

 

 

嗯!简直太恶心了!火速进行样式定义:

 

 

Code

 

简单说,上面这些就是一个上面圆角下面直角的Border,里面嵌入文字,并在被选中后改变一下颜色和向下的外边距(Margin),且为了保持高度不变,内边距(Padding)也随之进行了调整。

 

 

现在的设计视图完整效果:

 

 

至此,主页面完整代码:

 

 

Code

 

源文件下载


本文转自斯克迪亚博客园博客,原文链接:http://www.cnblogs.com/SkyD/archive/2008/08/25/1275413.html,如需转载请自行联系原作者

相关文章
复选框样式修改(复选框变为圆形)
复选框样式修改(复选框变为圆形)
|
C#
WPF 左键单击弹出菜单 ContextMenu
原文:WPF 左键单击弹出菜单 ContextMenu WPF中的ContextMenu在XAML中可直接做出来,但是仅限于右键弹出菜单,如果需要添加左键弹出功能,只需要在事件中添加Click事件 XMAL代码如下 ...
3098 0
|
关系型数据库 MySQL 网络安全
Mysql8.0 开启 SSL加密 mysql_ssl_rsa_setup
Mysql8.0 开启 SSL加密 mysql_ssl_rsa_setup
2149 0
|
算法 C# 数据安全/隐私保护
C# | 上位机开发新手指南(十)加密算法——ECC
本篇文章我们将继续探讨另一种非对称加密算法——ECC。 严格的说,其实ECC并不是一种非对称加密算法,它是一种基于椭圆曲线的加密算法,广泛用于数字签名和密钥协商。 与传统的非对称加密算法(例如RSA)不同,ECC算法使用椭圆曲线上的点乘法来生成密钥对和进行加密操作,而不是使用大数分解等数学算法。这使得ECC算法具有相同的安全性和强度,但使用更少的位数,因此在资源受限的环境中具有优势。 ECC算法虽然使用公钥和私钥进行加密和解密操作,但是这些操作是基于点乘法实现的,而不是基于大数分解等算法实现的。因此,ECC算法可以被视为一种非对称加密算法的变体,但是它与传统的非对称加密算法有所不同。
543 0
C# | 上位机开发新手指南(十)加密算法——ECC
|
SQL 关系型数据库 MySQL
C#使用Npgsql或SqlClient连接数据库
在C#使用Npgsql和SqlClient连接SQLserver、pgsql
665 2
|
C#
WPF技术之TabControl控件
WPF TabControl控件用于创建一个选项卡式的用户界面,可以在单个窗口中显示多个视图或内容。
758 0
|
XML C# 数据格式
WPF技术之DocumentViewer控件
WPF 的 DocumentViewer 是一个强大的控件,用于在应用程序中显示各种类型的文档,如 XPS(XML Paper Specification)、FlowDocument 和 FixedDocument 等。
2509 1
|
前端开发 容器
css——图片缩放,拉伸,变形的解决办法
css——图片缩放,拉伸,变形的解决办法
1229 0
|
前端开发
【CSS】background-image背景图片全屏铺满自适应
【CSS】background-image背景图片全屏铺满自适应
276 0