1.可传参数

namespace DrugInfo
{
public class ChooseDrugRoutedEventArgs : RoutedEventArgs
{
public ChooseDrugRoutedEventArgs(RoutedEvent routedEvent, object source) : base(routedEvent, source) { } public string Message { get; set; }
} public partial class ChooseDrug
{
//声明和注册路由事件
public static readonly RoutedEvent ChooseDrugRoutedEvent = EventManager.RegisterRoutedEvent("ChooseDrug", RoutingStrategy.Bubble, typeof(ChooseDrugRoutedEventArgs), typeof(ChooseDrug)); //自定义事件委托
public delegate void ChooseDrugRoutedEventHandler(object sender, ChooseDrugRoutedEventArgs e); //CLR事件包装
public event ChooseDrugRoutedEventHandler ChooseDrugClick
{
add { AddHandler(ChooseDrugRoutedEvent, value); }
remove { RemoveHandler(ChooseDrugRoutedEvent, value); }
}
//界面选择数据后确定
private void Choose_OnClick(object sender, RoutedEventArgs routedEventArgs)
{ ChooseDrugRoutedEventArgs args = new ChooseDrugRoutedEventArgs(ChooseDrugRoutedEvent, this);
args.Message = "传数据过去";
this.RaiseEvent(args);//UIElement及其派生类
}
}
} //调用
namespace Purchasing
{
/// <summary>
/// Main.xaml 的交互逻辑
/// </summary>
public partial class Main
{
private void Control_Loaded(object sender, RoutedEventArgs e)
{
var popups = new ChooseDrug();
popups.ChooseDrugClick += Popups_ChooseDrugClick;
} private void Popups_ChooseDrugClick(object sender, ChooseDrugRoutedEventArgs e)
{
RadWindow.Alert(e.Message);
}
}
}

2.无参数,不需要自定义委托

.可传参数

namespace DrugInfo
{
public partial class ChooseDrug
{
//声明和注册路由事件
public static readonly RoutedEvent ChooseDrugRoutedEvent = EventManager.RegisterRoutedEvent("ChooseDrug", RoutingStrategy.Bubble, typeof(EventHandler<RoutedEventHandler>), typeof(ChooseDrug)); //CLR事件包装
public event RoutedEventHandler ChooseDrugClick
{
add { AddHandler(ChooseDrugRoutedEvent, value); }
remove { RemoveHandler(ChooseDrugRoutedEvent, value); }
}
//界面选择数据后确定
private void Choose_OnClick(object sender, RoutedEventArgs routedEventArgs)
{
RaiseEvent(new RoutedEventArgs(ChooseDrugRoutedEvent));
}
}
} //调用
namespace Purchasing
{
/// <summary>
/// Main.xaml 的交互逻辑
/// </summary>
public partial class Main
{
private void Control_Loaded(object sender, RoutedEventArgs e)
{
var popups = new ChooseDrug();
popups.ChooseDrugClick += Popups_ChooseDrugClick;
} private void Popups_ChooseDrugClick(object sender, RoutedEventArgs e)
{
RadWindow.Alert("OK");
}
}
}

WPF 自定义事件的更多相关文章

  1. WPF自定义路由事件(二)

    WPF中的路由事件 as U know,和以前Windows消息事件区别不再多讲,这篇博文中,将首先回顾下WPF内置的路由事件的用法,然后在此基础上自定义一个路由事件. 1.WPF内置路由事件 WPF ...

  2. wpf自定义控件中使用自定义事件

    wpf自定义控件中使用自定义事件 1 创建自定义控件及自定义事件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 ...

  3. 细说WPF自定义路由事件

    WPF中的路由事件 as U know,和以前Windows消息事件区别不再多讲,这篇博文中,将首先回顾下WPF内置的路由事件的用法,然后在此基础上自定义一个路由事件. 1.WPF内置路由事件   W ...

  4. 【2016-11-11】【坚持学习】【Day24】【WPF 自定义控件 附加属性 自定义事件】

    UserControl ,自定义控件. 这里刚刚想到一个问题.什么时候应该用usercontrol 定义一个控件.什么时候应该重写控件的template和样式,实现新效果. 引用一下人家的话:http ...

  5. WPF自定义RoutedEvent事件示例代码

    ************************* 引用网友,便于查找所用..... 创建自定义路由事件和应用分为6个步骤: (1)自定义路由事件参数对象 (2)声明并注册路由事件 (3)为路由事件添 ...

  6. WPF 自定义路由事件

    如何:创建自定义路由事件 首先自定义事件支持事件路由,需要使用 RegisterRoutedEvent 方法注册 RoutedEvent C#语法 public static RoutedEvent ...

  7. WPF自定义路由事件(一)

    首先自定义事件支持事件路由,需要使用 RegisterRoutedEvent 方法注册 RoutedEvent C#语法 public static RoutedEvent RegisterRoute ...

  8. WPF 创建自定义控件及自定义事件

    1 创建自定义控件及自定义事件 /// <summary> /// 演示用的自定义控件 /// </summary> public class ExtButton : Butt ...

  9. WPF 自定义柱状图 BarChart

    WPF 自定义柱状图 当前的Telerik控件.DevExpress控件在图表控件方面做得不错,但是有时项目中需要特定的样式,不是只通过修改图表的模板和样式就能实现的. 或者说,通过修改当前的第三方控 ...

随机推荐

  1. 关于tensorboard启动问题

    我在学习过程中遇到了tensorboard无法启动的问题. 按照网上的教程,我无法正常启动tensorboard,全过程没有报错,但是打开tensorboard显示 No dashboards are ...

  2. mysql 创建函数问题

    ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declar ...

  3. golang ----rune数据类型

    查询,官方的解释如下: // rune is an alias for int32 and is equivalent to int32 in all ways. It is // used, by ...

  4. easyui datagrid checkbox选中事件

    $('#grid_Order').datagrid({       onCheck: function(index, data) { //alert(data[0]);               / ...

  5. (面试)Statement和PrepareStatement有什么区别

    (1)Statement用于执行静态sql语句,在执行时,必须指定一个事先准备好的sql语句.PrepareStatement是预编译的sql语句对象,sql语句被预编译并保存在对象中.被封装的sql ...

  6. Java Date and Calendar examples

    Java Date and Calendar examples This tutorial shows you how to work with java.util.Date and java.uti ...

  7. iphone 4s插件的安装,问题及美化

    此处iphone4s为美版,系统版本为5.0.1 首先添加我自己的weiphone源:http://apt.weiphone.com/u/2903862以及破解资源源:http://cydia.xse ...

  8. Node.js使用rabbitMQ(一)

    目前使用的开发环境主要还是win,所以也只是介绍在win下的rabbitMQ的使用. 一.安装rabbitMQ(Installing on Windows) 关于安装地址,参见:Installing ...

  9. ASP.NET MVC中的cshtml页面中的下拉框的使用

    ASP.NET MVC中的cshtml页面中的下拉框的使用 用上@Html.DropDownList 先记下来..以做备忘...

  10. iOS7隐藏状态栏 status Bar

    转自:http://blog.csdn.net/dqjyong/article/details/17896145 IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCO ...