欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

WPF 自定义控件(UserControl)简单创建方法

程序员文章站 2022-03-04 11:50:02
...

正文

简述

想创建一个简单控件,又不想用数据绑定和依赖。

目标

创建自定义控件MyButton,空间内包含Label和Image。
在控件这级可以改变Label的Content属性,以及Image的Source属性。

实现

原理

在控件的后台创建自定义属性,并在属性Set中更改前端控件的属性。

引用代码

	<!--********************* Window 引用自定义控件所在命名空间  xmlns:c="clr-namespace:XXXXXX"  *********************-->	
<Window x:Class="SingleStudy.Window1"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:SingleStudy" 
	Title="SingleStudy" Height="300" Width="300"
	>
	<Grid Background="LightSeaGreen">
		<!--********************* 添加自定义控件 MyButton 并赋值 *********************-->	
		<c:MyButton Text="Hello World" Src="pack://application:,,,/Images/pic.png"/>
	</Grid>
</Window>

效果入下图所示
WPF 自定义控件(UserControl)简单创建方法

前端代码

<UserControl x:Class="SingleStudy.MyButton"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
	<Grid ShowGridLines="True" Height="200" Width="200">
	<!--********************* 行定义 2行 *********************-->
		<Grid.RowDefinitions>
			<RowDefinition/>
			<RowDefinition/>
		</Grid.RowDefinitions>
	<!--********************* Label  水平居中,垂直居中 *********************-->	
		<Label Name="myLabel" Grid.Row="0" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
		
	<!--********************* Image 大小50X50 *********************-->	
		<Image Name="myImage" Grid.Row="1" Height="50" Width="50"/>
	</Grid>
</UserControl>

后端代码

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;	//请引用此命名空间,与BitmapImage类相关。

namespace SingleStudy
{
	/// <summary>
	/// Interaction logic for MyButton.xaml
	/// </summary>
	public partial class MyButton : UserControl
	{
		string text,src;
		public MyButton()
		{
			InitializeComponent();
		}
		
		public string Text{	//给控件创建Text属性
			get{
				return text;
			}
			set{
				text = value.ToString();
				myLabel.Content = text;	//给控件赋值时,修改Label的Content属性。
			}
		}
		public string Src{	//给控件创建Src属性
			get{
				return src;
			}
			set{
				src = value.ToString();
				myImage.Source = new BitmapImage(new Uri(src)); //给控件赋值时,修改Image的Source属性。
			}
		}
	}
}

文件结构

WPF 自定义控件(UserControl)简单创建方法
注意:图片请选择Always和Content,否则在程序中将无法显示。
WPF 自定义控件(UserControl)简单创建方法