WPF中自定义控件有两种,一种是继承自control的自定义控件,另一种是继承自UserControl的用户控件。用户控件可以认为是一系列原生控件的集合。本文主要介绍如何创建一个用户控件,以及用户控件的自定义属性和事件。
一、创建一个用户控件
1、一种是直接创建用户控件工程,这样会生成DLL,使用时调用DLL
2、在当前工程中直接创建
创建之后会生成一个xaml文件和cs文件,如下图
建议使用第二种方法,这样其他人在使用或修改该控件时溯源比较容易。
二、添加自定义属性
1、首先在xaml文件中添加需要的原生控件,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 <Grid> 2 <Grid.Background> 3 <ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/man_bg.png"/> 4 </Grid.Background> 5 <Grid.ColumnDefinitions> 6 <ColumnDefinition/> 7 <ColumnDefinition Width="1.6*"/> 8 <ColumnDefinition/> 9 </Grid.ColumnDefinitions> 10 <Grid Grid.Column="1" > 11 <Grid.RowDefinitions> 12 <RowDefinition/> 13 <RowDefinition/> 14 </Grid.RowDefinitions> 15 <TextBlock x:Name="txtName" Grid.Row="0" Style="{StaticResource TextBlockStyleSmall}" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type local:CustomInfoControl}},Path=CustomName}"></TextBlock> 16 <TextBox x:Name="txtCardID" Grid.Row="1" Style="{StaticResource TextBoxStyle}" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type local:CustomInfoControl}},Path=CardID}"></TextBox> 17 </Grid>