1.继承
/// <summary> /// 图标+文本编辑按钮控件 /// </summary> public partial class IconEditButton : Button
2.构造
#region Construction /// <summary> /// 构造函数 /// </summary> static IconEditButton() { DefaultStyleKeyProperty.OverrideMetadata(typeof(IconEditButton), new FrameworkPropertyMetadata(typeof(IconEditButton))); } #endregion
3..自定义以来属性
#region Icon /// <summary> /// 注册 /// </summary> public static readonly DependencyProperty IconProperty = DependencyProperty.Register ( "Icon", typeof(string), typeof(IconEditButton), new PropertyMetadata(string.Empty) ); /// <summary> /// 按钮字体图标编码 /// </summary> public string Icon { get { return (string)GetValue(IconProperty); } set { SetValue(IconProperty, value); } } #endregion
4.重写模板
<TextBlock x:Name="icon" Margin="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=IconMargin}" RenderTransformOrigin="0.5,0.5" Text="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path= Icon}" FontSize="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path= IconSize}" Foreground="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path= Foreground}" HorizontalAlignment="Left">