简介

"用户控件"继承自UserControl,而UserControl继承自ContentControl,也就是内容控件
UserControl和Window是一个层次上的,都有xaml和cs文件

流程

创建用户控件

 
 

写好用户控件

<UserControl x:Class="WpfDemo.UserControlDemo.OwnUserControl"
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">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Label Content="这是一个用户控件"></Label>
<Slider Minimum="0" Maximum="100" Grid.Row="1"></Slider>
</Grid>
</UserControl>

用户控件也可以套用用户控件,组成更复杂的界面

<UserControl x:Class="WpfDemo.UserControlDemo.UseUserControlUserControl"
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:userControlDemo="clr-namespace:WpfDemo.UserControlDemo"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="2*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Label Content="这是另一个用户控件,在这里使用了OwnUserControl用户控件"></Label>
<userControlDemo:OwnUserControl Grid.Row="1"></userControlDemo:OwnUserControl>
<Label Grid.Row="2" Content="这个用户控件在OwnUserControl的基础上再添加一个Slider"></Label>
<Slider Grid.Row="3" Minimum="0" Maximum="200" ></Slider>
</Grid>
</UserControl>

窗体引用用户控件

<Window x:Class="WpfDemo.UserControlDemo.UseUserControlWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:userControlDemo="clr-namespace:WpfDemo.UserControlDemo"
mc:Ignorable="d"
Title="UseUserControlWindow" Height="600" Width="400">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.2*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="0.2*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Label Content="使用OwnUserControl用户控件"></Label>
<userControlDemo:OwnUserControl Grid.Row="1"></userControlDemo:OwnUserControl>
<Label Grid.Row="2" Content="使用UseUserControlUserControl用户控件"></Label>
<userControlDemo:UseUserControlUserControl Grid.Row="3"></userControlDemo:UseUserControlUserControl>
</Grid>
</Window>

示例代码

https://github.com/zLulus/NotePractice/tree/dev3/WPF/WpfDemo/UserControlDemo

用户控件(UserControl)的更多相关文章

  1. 用户控件UserControl图片资源定位(一)---Xaml引用图片

    MEF编程实现巧妙灵活松耦合组件化编程,一些细节需要花费不小心思去处理: 其中组件中若包含用户控件,且需要访问图片资源,那么Xaml引用资源需要做以下设置 1. 用户控件(usercontrol)所在 ...

  2. asp.net动态解析用户控件(UserControl)

    模块化的时候需要用到: #region asp.net解析用户控件 /// <summary> /// asp.net 解析用户控件 /// </summary> /// &l ...

  3. Windows.Forms Panel 动态加载用户控件 UserControl

    创建好一个Windows Forms程序,在创建好的程序中Form1添加一个Panel控件 如图:

  4. C#中,用户控件UserControl里面用Panl加载UserControl,并实现利用委托互相传值

    用户控件主窗体结构:左侧树形菜单,右侧Panl: 根据点击的菜单节点,panl里面选择性加载某一个子窗体用户控件,并传值给子窗体: 反之,在子窗体进行相应的操作之后,传值给主窗体,触发主窗体的刷新. ...

  5. 如何在组件(Component中)模拟用户控件(UserControl)中FindForm()?

    using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentM ...

  6. ASP.NET用户控件事件的定义和实践

    假定用户控件(UserControl.ascx)中包含按钮控件  AButton,希望实现按  Button  按钮时,包含该用户控件的页面可以接收到事件. UserControl.ascx.cs   ...

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

    知识点: 创建自定义用户控件(UserControl) 使用户控件成为拖动源 使用户控件成为放置目标 使面板能够接收从用户控件放置的数据 创建项目: 1.新建WPF项目(Wpf-AllowDrop) ...

  8. 【WPF】WPF开发用户控件、用户控件属性依赖DependencyProperty实现双向绑定、以及自定义实现Command双向绑定功能演示

    前言: Wpf开发过程中,最经常使用的功能之一,就是用户控件(UserControl)了.用户控件可以用于开发用户自己的控件进行使用,甚至可以用于打造一套属于自己的UI框架.依赖属性(Dependen ...

  9. wpf的UserControl用户控件怎么添加到Window窗体中

    转载自 http://www.cnblogs.com/shuang121/archive/2013/01/09/2853591.html 我们来新建一个用户控件UserControl1.xaml &l ...

随机推荐

  1. [CSS] Nest a grid within a grid

    A grid item can also be a grid container! Let’s see how to specify a grid within a grid.

  2. 【codeforces 755C】PolandBall and Forest

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  3. 后台返回的HTML整个页面代码打开方法

    后台返回的html代码片段,需要插入html标签中,而返回的整个html文档,则需要重写整个页面. 解决方法: 需要一个中转页面,用document.write()方法重写整个页面: // POST任 ...

  4. Web开发的编码解决中文乱码

    中文乱码有两个环节会出现 第一,从请求体中获得的数据 从请求体中获得的数据要为其进行编码,默认为ISO-8859-1,所以在使用getParameter()时先调用setCharacterEncodi ...

  5. java十五个常用类学习及方法举例

    <code class="language-java">import java.util.Scanner; import java.util.Properties; i ...

  6. MongoDB小结

    教程 MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.MongoDB 旨在为WEB应用提供可扩展的 ...

  7. 设置vista和win7进入Debug模式

    转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎大家拍砖 设置vista和win7进入Debug模式: 1. bcdedit /copy  {curre ...

  8. Retrieving data from a server

    A system includes a server and a controller embedded in a device. Both the server and the embedded c ...

  9. 本机Ajax异步通信

    昨天我们用JQuery.Ajax解释JQuery样通过Ajax实现异步通信.为了更好的编织知识网,今天我们用一个Demo演示怎样用javascript实现原生Ajax的异步通信. 原生Ajax实现异步 ...

  10. Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果

    大家好,今天给大家带来一个仿360手机卫士悬浮窗效果的教程,在开始之前请允许我说几句不相干的废话. 不知不觉我发现自己接触Android已有近三个年头了,期间各种的成长少不了各位高手的帮助,总是有很多 ...