用XAML做网页!!—导航栏

简介:

 

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

 

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

 

 

 

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

 

 

 

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

 

 

完成后的代码如下:

 

 

ContractedBlock.gif 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 占据一列,横向排开,现在的效果嘛...是这样:

 

 

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

 

 

ContractedBlock.gif Code

 

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

 

 

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

 

 

至此,主页面完整代码:

 

 

ContractedBlock.gif Code

 

源文件下载


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

相关文章
|
7月前
|
前端开发 数据库 容器
ivx页面(4)下拉菜单的页面
ivx页面(4)下拉菜单的页面
45 0
|
9月前
|
Web App开发 开发框架 JavaScript
|
11月前
|
C#
WPF登录跳转到指定页面
WPF登录跳转到指定页面
130 0
|
前端开发
侧边导航栏(抽屉式设计)界面 (html + css)
写在前面 哈喽~大家好,这篇呢带来的是侧边导航栏(抽屉式设计),采用 (html + css) 来实现的,编辑器是 WebStorm 。接下来来看看效果吧。
917 0
侧边导航栏(抽屉式设计)界面 (html + css)
|
iOS开发
iOS开发-导航栏标题动画
iOS开发-导航栏标题动画
159 0
iOS开发-导航栏标题动画
|
前端开发
HTML侧边导航栏
本文用最简洁的语言,来教会读者,如果用html+css来制作,侧边导航栏,本案例以手机商城中的部分为例子来制作。
175 0
HTML侧边导航栏
|
C# C++
C# WPF 左侧菜单右侧内容布局效果实现
原文:C# WPF 左侧菜单右侧内容布局效果实现 我们要做的效果是这样的,左侧是可折叠的菜单栏,右侧是内容区域,点击左侧的菜单项右侧内容区域则相应地切换。 wpf实现的话,我的办法是用一个tabcontrol,修改tabcontrol的样式模板,首先将控件的TabStripPlacement设置为left使tabcontrol的item header部分靠左内容靠右,然后用一个Expander将TabPanel包住实现可折叠菜单效果,最后就是把用到的控件样式修改一下即可。
4553 0
|
区块链 C#
WPF如何实现一个漂亮的页签导航UI
原文:WPF如何实现一个漂亮的页签导航UI      最近看到一个比较漂亮的UI主界面,该UI是用左边的页签进行导航,比较有特色,就想着尝试用WPF来实现一下。经过一番尝试,基本上将UI设计图的效果用WPF程序进行了实现。
2058 0
|
C#
WPF中的菜单模板
原文:WPF中的菜单模板 资源字典代码如下: ...
1178 0
|
C#
WPF 自定义标题栏 自定义菜单栏
原文:WPF 自定义标题栏 自定义菜单栏 自定义标题栏 自定义列表,可以直接修改WPF中的ListBox模板,也用这样类似的效果。但是ListBox是不能设置默认选中状态的。 而我们需要一些复杂的UI效果,还是直接自定义控件来的快   GitHub下载地址:https://github.
2471 0