zoukankan      html  css  js  c++  java
  • Expression Blend实战开发技巧——ImageButton详解

    这款软件相信大家都不陌生,是时下最火的iphone,在这款软件中典型的应用了ImageButton。除了图片,我们注意到上图中的ImageButton都还配有描述文字。假设你遇到类似的需求,你可能马上会意识到,Button的逻辑树中只有一个Content属性,要么放图片进去,要么输入文字。那么,我现在就通过对烤地瓜仁兄博客的学习,并对实现过程予以充实。
    一:创建模板
    首先添加一个TextBlock到LayoutRoot。右击TextBlock,在弹出菜单中选择“构成控件”,将Style命名为ImageButtonStyle,格式默认为Button
    点击确定,然后可以得到下图中的效果。Blend为我们自动生成的样式元素结构下图所示,一个简单的ContentPresenter被Grid包裹。
    点击下图中,最左侧的图标,返回到[UserControl]范围,切换到UserControl编辑视图。
    此时我们需要几张图片作为素材,随便下载一些ICON就可以了,在项目中新建文件夹,名为Images,将图片拷贝进来,调节Button的宽度和高度,随便选择一张图片,将它拖拽到Button上,然后松开鼠标,得到下图中的效果。Image被Button包裹。
    右击Button,在弹出菜单中选择 编辑模板 -> 编辑当前模板,切换到Style编辑视图。
    二:模板绑定
    在ImageButtonStyle的Grid中,添加一个TextBlock,然后在右侧属性面板中找到TextBlock的Text属性(在公共属性中),点击Text属性最右侧的小方块。在弹出菜单中选择 “模板绑定”-> Tag。
    同上,在“对象和时间线”面板中点击最左侧的图标,返回到[UserControl]范围,切换到UserControl编辑视图。
    在“对象和时间线”面板中选择Button,然后查看右侧属性面板,找到Tag属性,输入一些文本比如“我的电脑”
    得到如下效果:
    在此过程中,首先我们将TextBlock控件转换为Button控件(ImageButtonStyle),ImageButtonStyle会应用于所有的button,然后在ImageButtonStyle中添加TextBlock,TextBlock的text属性绑定Tag。
    如例中Tag为“我的电脑”所以ImageButtonStyle中的TextBlocktext属性为“我的电脑”,ImageButtonStyle应用于所有的Buton,所以就看到了如图的效果。
    三:调整文字位置
    “我的电脑”这几个字可否调整一下位置,换个颜色,答案是当然可以
    选择TextBlock——属性面板——调整水平和竖直对齐方式
    在画笔中调整前景色
    效果如下:
    文字移下去了,但是还需要修改图片的位置,其实很简单,直接把图片往上面拖动就OK
    这三部分代码如下:
    <UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d
    ="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc
    ="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable
    ="d"
    x:Class
    ="DemoBysj.ImageButton"
    d:DesignWidth
    ="640" d:DesignHeight="480">
    <UserControl.Resources>
    <Style x:Key="ImageButtonStyle" TargetType="Button">
    <Setter Property="Template">
    <Setter.Value>
    <ControlTemplate TargetType="Button">
    <Grid>
    <TextBlock Text="{TemplateBinding Tag}" VerticalAlignment="Bottom" HorizontalAlignment="Center" Foreground="#FFFAF5F7"></TextBlock>
    <ContentPresenter/>
    </Grid>
    </ControlTemplate>
    </Setter.Value>
    </Setter>
    </Style>
    </UserControl.Resources>

    <Grid x:Name="LayoutRoot">
    <Button Style="{StaticResource ImageButtonStyle}" Width="64" Height="84" Margin="77,197,0,199" HorizontalAlignment="Left" d:LayoutOverrides="Width" Tag="我的电脑" VerticalAlignment="Top">
    <Image Source="images/sytb_116.png" Stretch="Fill" VerticalAlignment="Top" Height="64"/>
    </Button>
    </Grid>
    </UserControl>
    四:添加动画效果
    上面虽然看起来与ImageButton有点形似,但是还差神似。
    点击状态面板
    选中ContentPresenter,选择MouseOver
    添加鼠标经过时,“手型”效果
    添加鼠标经过时,“放大”效果
    到此,就可以有明显的按钮效果了,而且点击时有明显的点击效果。
  • 相关阅读:
    关于快速幂算法有效性的证明
    二进制在算法编写中的常用概念
    C++ P3379 【模板】最近公共祖先(LCA)
    关于二分图染色的几点总结
    快速打出System.out.println("");
    try{}catch(){}//根据异常信息使用不同的方法要怎么实现
    Iterator<Entry<String,String>> iter=map.entrySet().iterator(); 是什么意思
    java_Collection 类集
    instanceof的用法②
    instanceof的用法①
  • 原文地址:https://www.cnblogs.com/junyuz/p/1964961.html
Copyright © 2011-2022 走看看