简介:
控件实现简单,使用 Border 作为容器,鼠标事件实现动态效果,未使用style 的trigger,可通过自定义属性改变文本,字体大小,图片,颜色,高宽。可以通过生成的dll直接使用。
属性总览:
M_Background:border 背景颜色。当前黑色。
M_FontSize:字体大小。
M_Height:高度。
M_Width:宽度。
M_TipText:提示文本。
M_ImagePath:图片路径。支持相对路径,绝对路径。
xaml代码:
<UserControl x:Class="UserDefineWPFUI.ButtonUser.ButtonUser_Tip"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:UserDefineWPFUI.ButtonUser"
mc:Ignorable="d"
>
<Border x:Name="myButton" CornerRadius="5" Background="Gray" Padding="2" MouseEnter="myButton_MouseEnter" MouseLeave="myButton_MouseLeave" Height="50" Width="50">
<Grid VerticalAlignment="Center" HorizontalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition x:Name="rowImage" Height="1*"/>
<RowDefinition x:Name="rowTipText" Height ="0*"/>
</Grid.RowDefinitions>
<Image Grid.Row="0" x:Name="bImage" VerticalAlignment="Center" HorizontalAlignment="Center" Margin ="0 2 0 0"/>
<TextBlock Grid.Row="1" x:Name="bTextBlock" Text="按钮" FontSize="12" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0 2 0 0"/>
</Grid>
</Border>
</UserControl>
cs代码:
namespace UserDefineWPFUI.ButtonUser
{
/// <summary>
/// ButtonUser_Tip.xaml 的交互逻辑
/// </summary>
public partial class ButtonUser_Tip : UserControl
{
#region 属性
#region 提示文本
private string tipText = "按钮";
public string M_TipText
{
get
{
return tipText;
}
set
{
tipText = value;
this.Dispatcher.Invoke(() =>
{
bTextBlock.Text = value;
});
}
}
#endregion
#region 图片路径
private string imagePath;
public string M_ImagePath
{
get
{
return imagePath;
}
set
{
imagePath = value;
this.Dispatcher.Invoke(() =>
{
bImage.Source = new BitmapImage(new Uri(value, UriKind.RelativeOrAbsolute));
});
}
}
#endregion
#region 背景颜色
private Brush background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("Gray"));
public Brush M_Background
{
get
{
return background;
}
set
{
background = value;
myButton.Background = value;
}
}
#endregion
#region 高
private int height;
public int M_Height
{
get
{
return height;
}
set
{
height = value;
myButton.Height = value;
}
}
#endregion
#region 宽
private int width;
public int M_Width
{
get
{
return width;
}
set
{
width = value;
myButton.Width = value;
}
}
#endregion
#region 字大小
private int fontSize = 12;
public int M_FontSize
{
get
{
return fontSize;
}
set
{
fontSize = value;
bTextBlock.FontSize = value;
}
}
#endregion
#endregion
public ButtonUser_Tip()
{
InitializeComponent();
}
private void myButton_MouseEnter(object sender, MouseEventArgs e)
{
rowImage.Height = new GridLength(myButton.Height / 2);
rowTipText.Height = new GridLength(myButton.Height / 2);
}
private void myButton_MouseLeave(object sender, MouseEventArgs e)
{
rowImage.Height = new GridLength(myButton.Height );
rowTipText.Height = new GridLength(0);
}
}
}