WPF 自訂IconButton

來源:互聯網
上載者:User

標籤:

自訂一個按鈕控制項

按鈕控制項很簡單,我們在項目中有時把樣式封裝起來,添加相依性屬性,也是為了統一。

這裡舉例,單純的表徵圖控制項怎麼設定

1、UserControl介面樣式

<UserControl x:Class="WpfApplication12.IconButton"                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"                 mc:Ignorable="d"                 d:DesignHeight="300" d:DesignWidth="300" Loaded="IconButton_OnLoaded">    <UserControl.Resources>        <Style TargetType="Button">            <Setter Property="Template">                <Setter.Value>                    <ControlTemplate TargetType="Button">                        <Grid>                            <Rectangle x:Name="T_Rectangle" Height="15" Width="15">                                <Rectangle.Fill>                                    <ImageBrush ImageSource="{Binding ImagesSource}"></ImageBrush>                                </Rectangle.Fill>                            </Rectangle>                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}"></ContentPresenter>                        </Grid>                        <ControlTemplate.Triggers>                            <Trigger Property="IsMouseOver" Value="True">                                <Setter TargetName="T_Rectangle" Property="Height" Value="18"></Setter>                                <Setter TargetName="T_Rectangle" Property="Width" Value="18"></Setter>                            </Trigger>                            <Trigger Property="IsPressed" Value="True">                                <Setter TargetName="T_Rectangle" Property="Height" Value="20"></Setter>                                <Setter TargetName="T_Rectangle" Property="Width" Value="20"></Setter>                            </Trigger>                        </ControlTemplate.Triggers>                    </ControlTemplate>                </Setter.Value>            </Setter>        </Style>    </UserControl.Resources>    <Grid>        <Button Click="ButtonBase_OnClick"></Button>    </Grid></UserControl>

2、後台設定,我這邊只添加了個圖片路徑和事件委託。其它的自己加吧

    public partial class IconButton : UserControl    {        public IconButton()        {            InitializeComponent();        }        public ImageSource ImagesSource        {            get { return (ImageSource)GetValue(ImagesSourceProperty); }            set { SetValue(ImagesSourceProperty, value); }        }        public static readonly DependencyProperty ImagesSourceProperty = DependencyProperty.Register("ImagesSource",        typeof(ImageSource), typeof(IconButton));        private void IconButton_OnLoaded(object sender, RoutedEventArgs e)        {            var data = new IconButtonModel()            {                ImagesSource = ImagesSource            };            this.DataContext = data;        }        public delegate void ClickEventArgs(object sender, RoutedEventArgs e);        public event ClickEventArgs Click;        private void ButtonBase_OnClick(object sender, RoutedEventArgs e)        {            if (Click != null)            {                Click(sender, e);            }        }    }    public class IconButtonModel    {        public ImageSource ImagesSource { get; set; }    }

 

WPF 自訂IconButton

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.