C# WPF 自定义控件 提示文本Button 按钮

 简介:

控件实现简单,使用 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);
        }
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值