你的位置:首页 > 软件开发 > ASP.net > 自己写一个图片按钮(XAML)

自己写一个图片按钮(XAML)

发布时间:2015-03-14 16:00:54
有时需要用三张图片(正常状态,鼠标移上,鼠标按下)来作为一个按钮的样式,虽然这种做法不好,应该用矢量的方式制作样式,但有的时候还是需要这样做的。 每次都修改按钮的样式来实现这个做法,既麻烦又会生成大段的XAML代码,不利于维护,抽出一个自定义图片按钮控件,只需传入三张图片的路径即 ...

有时需要用三张图片(正常状态,鼠标移上,鼠标按下)来作为一个按钮的样式,虽然这种做法不好,应该用矢量的方式制作样式,但有的时候还是需要这样做的。

每次都修改按钮的样式来实现这个做法,既麻烦又会生成大段的XAML代码,不利于维护,抽出一个自定义图片按钮控件,只需传入三张图片的路径即可使用,显然是更好的做法,下面就演示一下如何编写这个控件,VS2015和Blend2015结合使用。

1. 首先,在VS中新建一个WPF自定义控件库,命名为WpfCustomControlLibrary,系统会自动生成一个CustomControl1类,并生成一个Themes文件夹,其中包含一个资源字典文件Generic.xaml。如果打开AssemblyInfo.cs文件,会看到包含如下代码,

[assembly:ThemeInfo(  ResourceDictionaryLocation.None, //主题特定资源词典所处位置               //(在页面、应用程序或任何主题特定资源词典中               // 未找到某个资源的情况下使用)  ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置                   //(在页面、应用程序或任何主题特定资源词典中                   // 未找到某个资源的情况下使用))]

这段代码指明在Themes文件夹下的Generic.xaml资源字典中包含控件的默认样式,这正是WPF自定义控件库和一般程序集的区别。

2. 将CustomControl1类改为ImageButton

此时的初始代码如下,

  public class ImageButton : Control  {    static ImageButton()    {      DefaultStyleKeyProperty.OverrideMetadata(typeof(ImageButton), new FrameworkPropertyMetadata(typeof(ImageButton)));    }  }
<ResourceDictionary  ="http://schemas.microsoft.com/get='_blank'>winfx/2006/xaml/presentation"  ="http://schemas.microsoft.com/winfx/2006/xaml"  ="clr-namespace:WpfCustomControlLibrary">  <Style TargetType="{x:Type local:ImageButton}">    <Setter Property="Template">      <Setter.Value>        <ControlTemplate TargetType="{x:Type local:ImageButton}">          <Border Background="{TemplateBinding Background}"              BorderBrush="{TemplateBinding BorderBrush}"              BorderThickness="{TemplateBinding BorderThickness}">          </Border>        </ControlTemplate>      </Setter.Value>    </Setter>  </Style></ResourceDictionary>

原标题:自己写一个图片按钮(XAML)

关键词:图片

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。