如何把Button按钮样式换成ImageButton?

来源:互联网 发布:淘宝七天退货时间计算 编辑:程序博客网 时间:2024/05/09 03:58

问题描述

red button

解决方案

最直接的办法就是把button的content设置为图片,还有一个比较通用的办法就是把这个button做成一个模板化控件。
新建一个名称为ImageButton的模板化控件,在cs文件里加上一个Icon属性,前台模板里对应的加上一个图片,然后实现Icon的属性,要用到类似下面的代码来注册一下这个属性
public object Title
{
get { return GetValue(TitleProperty); }
set { SetValue(TitleProperty, value); }
}

public static readonly DependencyProperty TitleProperty =
DependencyProperty.Register(
“Title”,
typeof(object),
typeof(TWindow),
null);
最后不要忘记重写OnApplyTemplate,类似
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
}
的代码就可以搞定,在这里面可以用GetTemplateChild(控件名称)来得到模板里的控件,组织一下就得到了一个通用的ImageButton控件。
附上我做的一个效果:
silverlight

代码如下:

<Style x:Key="StyleCode" TargetType="{x:Type Button}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Button}"><Border x:Name="borderBG"><Border.Background><ImageBrush ImageSource="../Resources/register/code-btn.png"/></Border.Background><ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter TargetName="borderBG" Property="Background"><Setter.Value><ImageBrush ImageSource="../Resources/register/code-btn-hover.png" /></Setter.Value></Setter></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style>

参考

http://stackoverflow.com/questions/3965427/wpf-set-border-background-in-trigger

0 0
原创粉丝点击