创建WPF用户控件

wpf用户自定义控件和winform创建方法类似,这里先纠正一个误区,就是有很多人也是添加,然后新建,然后是新建用户控件库,但是为什么编译好生成后Debug目录下还是只有exe文件而没有dll文件呢?这里大家要注意一下,新建要在解决方案处右键新建-新建项目,而不是在项目下新建,因为一个项目只产生一个exe的程序文件,要生成dll文件必须新建一个项目。如图:

下面我用一个Tooltip举例新建一个用户控件:

先新建一个wpf程序,我这里命名为:“Wpf自定义控件”。然后再新建一个项目,即:"wpf用户控件"(WPF User Control Library),我这里命名为:“WpfControlLibrary1”.

之后在新建的项目“WpfControlLibrary1”的xaml文件里面添加如下代码:

<UserControl x:Class="WpfControlLibrary1.UserControl1"
             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" RenderTransformOrigin="0,0" HorizontalAlignment="Left"
             VerticalAlignment="Top"
             d:DesignHeight="300" d:DesignWidth="300"
             Name="用户自定义控件">

    <UserControl.RenderTransform>
        <TransformGroup>
            <ScaleTransform ScaleX="1" ScaleY="1"/>
            <SkewTransform AngleX="0" AngleY="0"/>
            <RotateTransform Angle="0"/>
            <TranslateTransform x:Name="UserControlToolTipXY" X="0" Y="0"/>
        </TransformGroup>
    </UserControl.RenderTransform>

    <Grid HorizontalAlignment="Center" VerticalAlignment="Center"
    MinWidth="200" MinHeight="120">
        <Grid.RowDefinitions>
            <RowDefinition Height="0.333*"/>
            <RowDefinition Height="0.667*"/>
        </Grid.RowDefinitions>
        <Rectangle Fill="#FFFBFBFB" Stroke="#FF000000" RadiusX="10" RadiusY="10"
             RenderTransformOrigin="0.139,0.012" StrokeThickness="1" Grid.RowSpan="2">
            <Rectangle.BitmapEffect>
                <DropShadowBitmapEffect Opacity="0.8"/>
            </Rectangle.BitmapEffect>
        </Rectangle>
        <Rectangle RadiusX="10" RadiusY="10" RenderTransformOrigin="0.139,0.012"
            StrokeThickness="10" Stroke="{x:Null}"
    Margin="1,1,1,1" Grid.Row="0" Grid.RowSpan="2">
            <Rectangle.Fill>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0.725">
                    <GradientStop Color="#00E6D9AA" Offset="0.487"/>
                    <GradientStop Color="#FF001EFF" Offset="0.996"/>
                </LinearGradientBrush>
            </Rectangle.Fill>
        </Rectangle>
        <Rectangle RadiusX="10" RadiusY="10" RenderTransformOrigin="0.493,0.485"
            StrokeThickness="10" Stroke="{x:Null}" Grid.RowSpan="2" Margin="1,1,1,1">
            <Rectangle.Fill>
                <LinearGradientBrush EndPoint="0.014,0.5" StartPoint="0.211,0.5">
                    <GradientStop Color="#00E6D9AA" Offset="0.513"/>
                    <GradientStop Color="#FF001EFF" Offset="0.996"/>
                </LinearGradientBrush>
            </Rectangle.Fill>
        </Rectangle>
        <Rectangle RadiusX="10" RadiusY="10" RenderTransformOrigin="0.493,0.485"
            StrokeThickness="10" Stroke="{x:Null}" Grid.RowSpan="2" Margin="1,1,1,1">
            <Rectangle.Fill>
                <LinearGradientBrush EndPoint="0.493,0.002" StartPoint="0.493,0.33">
                    <GradientStop Color="#00E6D9AA" Offset="0.513"/>
                    <GradientStop Color="#FF001EFF" Offset="0.996"/>
                </LinearGradientBrush>
            </Rectangle.Fill>
        </Rectangle>
        <Rectangle RadiusX="10" RadiusY="10" RenderTransformOrigin="0.493,0.485"
            StrokeThickness="10" Stroke="{x:Null}" Grid.RowSpan="2" Margin="1,1,1,1">
            <Rectangle.Fill>
                <LinearGradientBrush EndPoint="0.99,0.441" StartPoint="0.794,0.441">
                    <GradientStop Color="#00E6D9AA" Offset="0.513"/>
                    <GradientStop Color="#FF001EFF" Offset="0.996"/>
                </LinearGradientBrush>
            </Rectangle.Fill>
        </Rectangle>
        <TextBlock Text="Hello!" TextWrapping="Wrap" x:Name="TextBlockToolTip"
            RenderTransformOrigin="0.5,0.5" Grid.Row="1" HorizontalAlignment="Left"
                VerticalAlignment="Center" Margin="20,0,0,20" />
        <TextBlock Name="ToolTipTitle" HorizontalAlignment="Stretch" Margin="15,16,15,6.1"
            FontSize="14" Text="用户自定义控件" d:LayoutOverrides="Height" />
    </Grid>
</UserControl>

  

效果如图:

下面我们在cs文件中添加如下代码进行控制:

public double UserControlToolTipX
        {
            get { return this.UserControlToolTipXY.X; }
            set { this.UserControlToolTipXY.X = value; }
        }

        public double UserControlToolTipY
        {
            get { return this.UserControlToolTipXY.Y; }
            set { this.UserControlToolTipXY.Y = value; }
        }

        public string UserControlTextBlockToolTip
        {
            get { return TextBlockToolTip.Text; }
            set { TextBlockToolTip.Text = value; }
        }

        public string UserControlToolTipTitle
        {
            get { return ToolTipTitle.Text; }
            set { ToolTipTitle.Text = value; }
        }

  完成后我们可以看到左侧的工具箱里面已经有我们刚才添加的自定义控件了,如图:

之后我们点击生成里面的生成用户控件,或者快捷键shift+F6,如图:

最后在我们的debug目录下就有刚才创建的dll文件了。

原文地址:https://www.cnblogs.com/xiaowie/p/9256769.html

时间: 2024-10-05 05:32:26

创建WPF用户控件的相关文章

WPF用户控件实现类似WinForm的子窗口

1.WPF 介绍 .NET Framework 4 WPF 是下一代显示系统,用于生成Windows 客户端应用程序. 使用 WPF可以创建广泛的独立应用程序以及浏览器承载的应用程序. WPF 的核心是一个与分辨率无关并且基于向量的呈现引擎,旨在利用现代图形硬件的优势.WPF 通过一整套应用程序开发功能扩展了这个核心,这些功能包括Extensible Application Markup Language (XAML).控件.数据绑定.布局.2-D和3-D图形.动画.样式.模板.文档.媒体.文本

用户控件,动态创建添加用户控件

用户控件的制作步骤 1,新建一个项目,文件>新建>项目. 2,添加>新建项>用户控件.文件类型为.cs 使用用户控件 在用户控件设计业点击工具栏中的生成项,选择第一项生成解决方案,或直接点F6: 生成成功后在windows窗体的工具栏最顶端就会显示此用户控件 动态添加控件 输入一个值为n,点击按钮,动态生成n个按钮,并编号号 private void button1_Click(object sender, EventArgs e) { //先获取用户输入的是几 int count

WPF 用户控件嵌入网页

WPF使用用户控件嵌入网页,直接使用WebBrowser或Frame会产生报错,报错信息如下: 1.使用WebBrowser,<WebBrowser Source="http://192.168.1.72:8080/zjzx/logoutUserInfo.action"/>,启动登录系统后直接报错,切换到该对应模块也会报错. 2.使用Frame,<Frame Source="http://192.168.1.72:8080/zjzx/logoutUserIn

Wpf 用户控件Load事件执行两次

<!--主窗体,放置一个用户控件--><Window x:Class="WpfApplication.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:wpfApplication="clr-n

WPF学习- AllowDrop 用户控件启用拖放功能

知识点: 创建自定义用户控件(UserControl) 使用户控件成为拖动源 使用户控件成为放置目标 使面板能够接收从用户控件放置的数据 创建项目: 1.新建WPF项目(Wpf-AllowDrop) 2.在MainWindow.xaml的 Grid控件添加源码 <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Sta

winform用户控件、动态创建添加控件、timer控件、控件联动

用户控件:(1) 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗体中添加, 将其实例化,然后添加到想要添加的容器的Control集合中. 动态创建添加控件: 配合上面的用户控件,实现类似QQ界面的打开自动加载好友昵称和签名 public Form1() { InitializeComponent(); //将当前登陆的账号的全部好友信息取出来 List<A

用户控件、动态创建添加

使用用户控件: 项目右键添加,用户控件,选择用户控件cs 在生成的项目中用设计编辑,点击菜单栏生成,生成解决方案,然后用户控件就可以使用了 制作简单的qq窗口,根据数据库自动添加数据 制作用户控件: 实体类:(qq,haoyou) qq: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace QQ.App_Code { public class qq { pu

使用用户控件(2)

3.2.2 使用用户控件(2) (3) 打开需要添加搜索框的页面,这里是Index.aspx. (4) 在页面代码头部的@Page指令下面添加一行代码,如下所示: <%@ Register src="WUCSearch.ascx" tagname="WUCSearch" tagprefix="uc1" %> 该代码将把刚才我们创建的用户控件WUCSearch.ascx注册到这个页面上.以后就可以直接在这个页面的任何地方使用了. (5)

wpf banner控件的封装

一.创建BannerAD用户控件 一个Banner用户控件可以包含n个BannerAD用户控件,在此创建2个BannerAD用户控件作为示例: BannerAD1.xaml <UserControl x:Class="WpfApp.BannerAD1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.