在vs中新增用户控件

前台xaml如下代码:

<UserControl x:Class="Zh.SelfServiceEquipment.UI.ZhControls.CountDownTimeControl"
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:local="clr-namespace:Zh.SelfServiceEquipment.UI.ZhControls"
mc:Ignorable="d"
d:DesignHeight="50" d:DesignWidth="300"
Loaded="UserControl_Loaded">
<Grid>
<StackPanel Orientation="Horizontal">
<Label Content="倒计时" Foreground="White" FontSize="20" VerticalAlignment="Center"></Label>
<Label Content="30" Foreground="Red" FontSize="25" VerticalAlignment="Center" x:Name="lblTime"></Label>
<Label Content="秒" Foreground="White" FontSize="20" VerticalAlignment="Center"></Label>
</StackPanel>
</Grid>
</UserControl>

CS代码:

public partial class CountDownTimeControl : UserControl
{
public delegate void CountDownTimeOutEventHandler(object sender);
public event CountDownTimeOutEventHandler OnCountDownTime;
private System.Windows.Threading.DispatcherTimer dTime;//定义事件,在倒计时结束的时候进行调用
public CountDownTimeControl()
{
InitializeComponent();
StartCountdownTime();
}
private int _count; public int Count//定义时间,并将该时间的值赋值给前台页面
{
get { return _count; }
set { _count = value; this.lblTime.Content = _count; }
}
public void StartCountdownTime() {
dTime = new System.Windows.Threading.DispatcherTimer();
dTime.Interval = new TimeSpan(,,);
dTime.Tick += DTime_Tick;
}
private void DTime_Tick(object sender, EventArgs e)
{
if (Count-- == )
{
this.dTime.Stop();
if (OnCountDownTime!=null)
{
this.OnCountDownTime(this);
}
}
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
dTime.Start();
}
}

接下来就是在MainWindow.xaml文件中对该控件进行引用

在前台页面命名空间写入

xmlns:zhControls="clr-namespace:Zh.SelfServiceEquipment.UI.ZhControls"

其中zhControls是随便定义的,Zh.SelfServiceEquipment.UI.ZhControls是项目中用户控件所在的命名空间

MainWindows.xaml前台代码如下

<Window x:Class="Zh.SelfServiceEquipment.UI.MainWindow"
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:local="clr-namespace:Zh.SelfServiceEquipment.UI"
xmlns:zhControls="clr-namespace:Zh.SelfServiceEquipment.UI.ZhControls"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid Background="Black">
<WrapPanel>
<zhControls:CountDownTimeControl Count="10" OnCountDownTime="CountDownTimeControl_OnCountDownTime"></zhControls:CountDownTimeControl>
</WrapPanel>
</Grid>
</Window>

MainWindow.xaml.cs代码

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void CountDownTimeControl_OnCountDownTime(object sender)
{
MessageBox.Show("倒计时结束");
}
}

大功告成,让我们看看运行结果

wpf创建用户控件(计时器控件)的更多相关文章

  1. WPF 创建用户控件并引用

    项目源码地址:https://github.com/lizhiqiang0204/WpfControlLibrary.git 首先创建新项目->WPF用户控件库项目 在UserControl1. ...

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

    用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...

  3. 浅尝辄止WPF自定义用户控件(实现颜色调制器)

    主要利用用户控件实现一个自定义的颜色调制控件,实现一个小小的功能,具体实现界面如下. 首先自己新建一个wpf的用户控件类,我就放在我的wpf项目的一个文件夹下面,因为是一个很小的东西,所以就没有用mv ...

  4. 在用户控件(ASCX)创建用户控件(ASCX)

    "我建了两个ascx,ascxA,ascxBascxA中放了一个PlaceHold,ascxB中放了一个textBoxascxA在page_load中动态创建了5个ascxB但是页面上什么都 ...

  5. WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案

    首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如  WPF中不规则窗体与WebBrowser控件的兼 ...

  6. WPF:理解ContentControl——动态添加控件和查找控件

    WPF:理解ContentControl--动态添加控件和查找控件 我认为WPF的核心改变之一就是控件模型发生了重要的变化,大的方面说,现在窗口中的控件(大部分)都没有独立的Hwnd了.而且控件可以通 ...

  7. Git使用总结 Asp.net生命周期与Http协议 托管代码与非托管代码的区别 通过IEnumerable接口遍历数据 依赖注入与控制反转 C#多线程——优先级 AutoFac容器初步 C#特性详解 C#特性详解 WPF 可触摸移动的ScrollViewer控件 .NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用

    一,原理 首先,我们要明白Git是什么,它是一个管理工具或软件,用来管理什么的呢?当然是在软件开发过程中管理软件或者文件的不同版本的工具,一些作家也可以用这个管理自己创作的文本文件,由Linus开发的 ...

  8. WPF进阶技巧和实战03-控件(1-控件及内容控件)

    所有控件都继承自System.Windows.Controls.Control类,这个类添加一些基本结构: 设置控件内容对齐方式 (HorizontalContentAlignment,Vertica ...

  9. WPF布局之让你的控件随着窗口等比放大缩小,适应多分辨率满屏填充应用

    一直以来,我们设计windows应用程序,都是将控件的尺寸定好,无论窗体大小怎么变,都不会改变,这样的设计对于一般的应用程序来说是没有问题的,但是对于一些比较特殊的应用,比如有背景图片的,需要铺面整个 ...

随机推荐

  1. 利用Unity3D与Oculus实现机器情绪安抚师的一种方案

    (一张最原始的Unity3D中音乐可视化粒子海的图,想象一下,如果这幅场景出现在虚拟设备中,辅以根据音乐频谱变化的色彩与悦动频率,会是怎样的效果呢?) Unity3D有着非常完备的虚拟三维场景交互开发 ...

  2. 【SqlServer系列】集合运算

    1   概述 已发布[SqlServer系列]文章如下: [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [SqlS ...

  3. jquery中防止冒泡事件

    冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 下面是html代码部分: <body> <div id="content"> 外层div元素 ...

  4. Easy DataGrid 实现动态列、行

    Easy DataGrid 实现动态列.行 前端代码: <title>展示销售的实时数据</title> <script type="text/javascri ...

  5. JAVA异常处理之finally中最好不要使用return

    finally 语句块中, 最好不要使用return, 否则会造成已下后果; 1, 如果catch块中捕获了异常, 并且在catch块中将该异常throw给上级调用者进行处理, 但finally中re ...

  6. git相关的学习资料

    1, 一个比较详细的git使用说明: http://blog.jobbole.com/78960/

  7. java连接数据库

    package com.shsxt.jdbcs; import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...

  8. ES6学习目录

    前面的话 ES6是JavaScript语言的下一代标准,已经在 2015 年 6 月正式发布.它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言 为什么要学 ...

  9. 统一代码风格工具——editorConfig

    前面的话 在团队开发中,统一的代码格式是必要的.但是不同开发人员的代码风格不同,代码编辑工具的默认格式也不相同,这样就造成代码的differ.而editorConfig可以帮助开发人员在不同的编辑器和 ...

  10. [补档]暑假集训D6总结

    考试 不是爆零,胜似爆零= = 三道题,就拿了20分,根本没法玩好吧= = 本来以为打了道正解,打了道暴力,加上个特判分,应该不会死的太惨,然而--为啥我只有特判分啊- - 真的是惨. 讲完题觉得题是 ...