首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用带有自定义路由事件的用户控件在caliburn micro中传递参数?

在Caliburn Micro中,可以使用自定义路由事件来传递参数给用户控件。下面是一种实现方式:

  1. 首先,创建一个自定义的用户控件,例如CustomControl,并在该控件中定义一个自定义路由事件,例如CustomEvent
代码语言:txt
复制
public class CustomControl : UserControl
{
    public static readonly RoutedEvent CustomEvent = EventManager.RegisterRoutedEvent(
        "Custom", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(CustomControl));

    public event RoutedEventHandler Custom
    {
        add { AddHandler(CustomEvent, value); }
        remove { RemoveHandler(CustomEvent, value); }
    }

    // 其他控件逻辑...
}
  1. 在使用该控件的视图中,可以通过在XAML中声明该自定义事件,并绑定一个事件处理方法来接收参数。
代码语言:txt
复制
<local:CustomControl>
    <local:CustomControl.Triggers>
        <EventTrigger RoutedEvent="local:CustomControl.Custom">
            <cal:ActionMessage MethodName="HandleCustomEvent">
                <cal:Parameter Value="参数值" />
            </cal:ActionMessage>
        </EventTrigger>
    </local:CustomControl.Triggers>
</local:CustomControl>
  1. 在视图对应的ViewModel中,实现HandleCustomEvent方法来处理该事件,并接收传递的参数。
代码语言:txt
复制
public void HandleCustomEvent(string parameter)
{
    // 处理传递的参数...
}

通过以上步骤,就可以在Caliburn Micro中使用带有自定义路由事件的用户控件来传递参数了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# WPF MVVM开发框架Caliburn.Micro入门介绍①

02 以下是一个关于Caliburn.Micro简短的列表: Action消息: 操作机制允许您将UI触发器(如按钮的“单击”事件)“绑定”到视图模型或演示器上的方法。该机制还允许向方法传递参数。...参数可以数据绑定到其他框架元素,也可以传递特殊值,例如DataContext或EventArgs。所有参数都会自动转换为方法的签名。...这对于现有的Caliburn用户来说都是相当标准的,但是我们在Caliburn.Micro上做了一些改进,这将进入更大的框架。...此外,我们将检查方法的签名并正确构造ActionMessage参数。可以关闭或自定义此机制。您甚至可以更改或添加不同控件的约定。...您可以开始使用Caliburn.Micro进行开发,然后,如果您遇到边缘情况或有其他需要转移到Caliburn,您将能够在应用程序中进行少量更改或不进行任何更改。

1.8K20

Caliburn.Micro学习笔记(二)----Actions

上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions,看一下Caliburn.Micro给我们提供了多强大的支持...,这就是控制button的IsEnable属性这是Caliburn的一个规则 2.有参数的方法和控件元素绑定 有参数的方法关联其实是一样的 我们把上边的例子做一下修改  先看一下效果图  三个button...source Caliburn.Micro提供了一些定义好的参数(不区分大小写)供我们在传递时用 ,当然我们也可以自定义我们自己的参数 $eventArgs — — 将触发器的 EventArgs 或输入的参数传递到您的行动...$this -行动所附加到的实际用户界面元素   这个$this感觉和$dataContext没什么区别 如果想自定义参数可以写到用这个方法MessageBinder.SpecialValues进行扩展...这是Caliburn.Micro  Action的源码,默认的是Click和控件的LeftMouseButtonDown事件,有时间你可以详细读一下它的源码 ?

86590
  • C# WPF MVVM开发框架Caliburn.Micro常用功能指南②

    这是Caliburn.Micro项目中最常用的约定和功能的快速指南。 01 事件连接 这会自动将控件上的事件关联到ViewModel上的方法。...可以像这样使用不同的事件: 可以向方法传递不同的参数,如下所示: 在主/详细场景中,ActionMessage可能会冒泡到父VM,但需要携带要执行操作的子实例。 $source 触发要发送的ActionMessage的实际框架元素。...$view 绑定到ViewModel的视图(通常是用户控件或窗口)。 $executionContext 操作的执行上下文,其中包含上述所有信息及更多信息。这在高级场景中很有用。...$this 操作附加到的实际UI元素。在这种情况下,元素本身不会作为参数传递,而是作为其默认属性传递。

    82520

    C# WPF MVVM开发框架Caliburn.Micro关于关于Actions⑤

    当然,ActionMessage是这个标记中特定于Caliburn.Micro的部分。它表示当触发发生时,我们应该发送一条“SayHello”的消息。...首先,我们现在使用的是一个完全的POCO类;这里没有INPC的问题。其次,我们在SayHello方法中添加了一个输入参数。...$view 绑定到ViewModel的视图(通常是用户控件或窗口)。 $executionContext 操作的执行上下文,其中包含上述所有信息及更多信息。这在高级场景中很有用。...但是,请注意,无论如何都可以使用扩展语法(基于System.Windows.Interactivity)填充参数或自定义解析器轻松访问控件本身。...如果您主要在Xaml编辑器中工作,而不是在设计器中工作,那么您会喜欢Message.Attach。请注意,Message.Attach声明都没有指定应该发送消息的事件。

    2.1K20

    C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

    在这里,您的根ViewModel被传递给定位器,以确定应用程序的shell应该如何呈现。在Silverlight中,这将导致设置或您的RootVisual。在WPF中,这将创建主窗口。...您可能会选择使用以下一种有趣的技术:如果视图是用户控件或窗口,则不必遍历元素树,而是使用一些反射来发现从FrameworkElement继承的所有私有字段。...但是,了解这些约定是什么以及在整个框架中如何使用它们是很重要的。在本文的最底部是一个代码列表,它显示了如何开箱即用地配置所有元素。...因此,如果我们在评级控件上有一个约定匹配,我们将针对ValueProperty设置绑定。第二个参数表示要在操作绑定中使用的默认属性。...因此,如果您使用指向分级控件的ElementName创建了一个操作绑定,但没有指定属性,那么我们将返回到“Value”属性。最后,第三个参数表示控件的默认事件。

    2.8K20

    C# WPF MVVM开发框架Caliburn.Micro IResult和协同程序⑥

    最后,它必须在模式对话框中显示结果,并用另一个异步任务响应用户的对话框选择。使用标准的事件驱动异步模型实现这一点并不是一种愉快的体验。然而,这是一个使用协同程序来完成的简单任务。...利用Caliburn.Micro中的这一特性需要两件事:首先,在某个类上实现IResult接口,表示您希望执行的任务;其次,从Action2生成IResult实例。让我们更具体一些。...仅列出使用IResult实现可以做的一些有趣的事情:显示消息框、显示基于VM的模式对话框、在用户的鼠标位置显示基于VM的弹出窗口、播放动画、显示文件保存/加载对话框、基于VM属性而非控件将焦点放在特定的...您可以检查该对话框的结果,如果用户取消了该对话框,请在事件参数上设置wascelected。...其他用途 现成的Caliburn.Micro可以为通过ActionMessage调用的任何操作自动执行协同路由。但是,有时您可能希望直接利用协同程序特性。

    49420

    C# WPF MVVM开发框架Caliburn.Micro快速搭建③

    01 启动项目 打开Visual Studio 创建一个名为“Caliburn.Micro.Hello”的新WPF应用程序 添加对Caliburn.Micro Nuget包的引用,最新的版本是4.0.173...资源和它将完成其余的工作。现在,运行应用程序。您应该看到如下内容: Caliburn.Micro创建了ShellViewModel,但不知道如何在没有视图的情况下渲染它。...创建名为“ShellView”的新用户控件(WPF)。...您现在应该可以看到UI: 在文本框中键入内容将启用该按钮,单击该按钮将显示一条消息: 03 工作原理 Caliburn.Micro使用一个简单的命名约定来定位ViewModels的视图。...您还可以看到,带有x:Name=“SayHello”的按钮绑定到ViewMModel上具有相同名称的方法。CanSayHello属性通过禁用按钮来保护对SayHello操作的访问。

    1.5K20

    C# WPF MVVM开发框架Caliburn.Micro Screens, Conductors 和 Composition⑦

    虽然这些模式主要通过从特定基类继承ViewModels来在CM中使用,但将它们视为角色而不是视图模型是很重要的。事实上,根据您的体系结构,屏幕可以是用户控件、演示者或视图模型。不过这有点超前了。...Caliburn.Micro实现 这些概念通过各种接口和基类在CM中实现,这些接口和基类主要用于构建ViewModels。...该方法是使用异步模式设计的,允许在做出密切决策时发生复杂的逻辑,如异步用户交互。调用方将向CanClose方法传递一个操作。实现者应该在保护逻辑完成时调用该操作。...之前,我们在Caliburn.Micro中讨论了屏幕和导体的理论和基本API。现在,我将介绍几个示例中的第一个。此特定示例演示如何使用导体和两个“页面”视图模型设置一个简单的导航样式shell。...将对象连接起来,以便可以在导体中打开不同的视图模型。当激活每个视图模型时,确认在选项卡控件中看到正确的视图。 在Silverlight中重建此示例。

    2.6K20

    Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

    用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo...和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle...先看一下Caliburn.Micro的大概流程,画的不太好,先这样吧 ? 好了,我们开始今天的笔记。...程序要引入的三个类库 Caliburn.Micro System.Windows.Interactivity 和 System.ComponentModel.Composition 上边两个Caliburn.Micro...:给控件命名的时候如txt_abc这样加下划线Calibrn会把这个名字分开 成txt和abc两个属性它会去txt属性里去找abc属性绑定 代码里打开子窗体是用的Caliburn.Micro自己的IWindowManager

    1.2K80

    C# WPF MVVM模式Caliburn.Micro框架下事件发布与订阅

    01 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Caliburn提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行通讯...Caliburn的事件聚合器,这玩意实现原理是观察者模式,观察者模式也就是常说的发布/订阅模式。...05 效果演示 06 源码 链接:https://pan.baidu.com/s/1IzA0FzOhnMTE0PCU1T9dLw 往期推荐 C# WPF框架Caliburn.Micro入门实例1 C#...C# WPF文本框TextEdit不以科学计数法显示 C# 通过正则表达式来限制控件输入有效性 C# datagridview、datagrid、GridControl增加行号 C# =>符号的使用...C# 无意间写了一段线程死锁的代码 C# 看懂这100+行代码,你就真正入门了(经典) C# WPF项目实战(经典) WPF 如何修改button圆角(经典) WPF XAML 为项目设置全局样式

    1.9K10

    C# WPF MVVM开发框架Caliburn.Micro自定义引导程序④

    01 自定义引导程序 在上一部分中,我们讨论了Caliburn.Micro WPF应用程序的最基本配置,并演示了与操作和约定相关的两个简单功能。在这一部分中,我想进一步探讨Bootstrapper类。...让我们首先将应用程序配置为使用IoC容器。本例中我们将使用内置容器,但是Caliburn.Micro可以很好地处理任何容器。首先,继续学习第1部分的代码。我们将以此为出发点。...这是Caliburn.Micro查找视图的地方。您可以在应用程序期间的任何时候将程序集添加到此中,以使它们可用于框架,但在引导程序中也有一个特殊的位置来执行此操作。...这些是我可能依赖于其他地方的部分,所以我希望它们可以用于注入。我还注册了容器本身(只是个人喜好)。 配置完容器后,我们需要告诉Caliburn.Micro如何使用它。这就是后面三个覆盖的目的。...继承时,应将“false”传递给基构造函数的“useApplication”参数。这允许引导程序在不存在Xaml应用程序实例的情况下正确配置Caliburn.Micro。

    97210

    C# WPF MVVM模式Prism框架下事件发布与订阅

    01 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行通讯...05 效果演示 06 源码 链接:https://pan.baidu.com/s/1H3HtTRAZVS-FlReTe00yxQ 往期推荐 C# WPF框架Caliburn.Micro入门实例1 C#...WPF MVVM项目实战(进阶①) C# WPF MVVM项目实战(进阶②) C# WPF框架Caliburn.Micro快速搭建 C# WPF项目实战 C# WPF mvvm模式下combobox绑定...(list、Dictionary) C# WPF MVVM模式下在主窗体显示子窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面...C# WPF文本框TextEdit不以科学计数法显示 C# 通过正则表达式来限制控件输入有效性 C# datagridview、datagrid、GridControl增加行号 C# =>符号的使用

    3.4K20

    【愚公系列】2023年02月 .NET CORE工具案例-Caliburn.Micro的使用基于WPF的改造的MVVM案例

    文章目录 前言 1.Caliburn.Micro是什么 2.Caliburn.Micro的主要功能 一、Caliburn.Micro的使用基于WPF的改造 1.项目介绍 2.安装软件包 3.改造App...是什么 Caliburn.Micro是一个微软开发的用于构建WPF,Silverlight和Windows Phone应用程序的MVVM(模型-视图-视图模型)框架。...2.Caliburn.Micro的主要功能 Caliburn.Micro是一个小型MVVM框架,主要提供了以下功能: 简化MVVM模式的实施 视图绑定 统一方式的消息机制 基于事件和命令的行为触发 支持视图导航...支持Windows Phone和Silverlight平台 Caliburn.Micro 的Github网址:https://github.com/Caliburn-Micro/Caliburn.Micro...Caliburn.Micro 官网:https://caliburnmicro.com/ 一、Caliburn.Micro的使用基于WPF的改造 1.项目介绍 HelloWorld:框架的搭建

    1.1K20

    C# 制作指示灯(经典)

    群友提问:C#中的指示灯怎么做,改变状态有什么好的方法吗?...制作指示灯的方法有很多中:比如: 通过GDI+绘制自定义LED指示灯控件; 调用现成的第三方控件库; 采用label标签,通过改变背景色实现;等等 本文就以第三种方式展开讲解 01 实现效果 02 实现代码...Foreground="{Binding ForeColor}" /> 后台代码: ①安装PropertyChanged.Fody,using PropertyChanged;然后在类前面添加...按钮启动指示灯,stop关闭指示灯; ③指示灯背景色的改变通过独立线程控制,跨线程修改UI线程控件属性使用Caliburn.Micro框架下的 Execute.OnUIThread(()=>{});实现...using System.Windows; using System.Windows.Media; using Brush = System.Windows.Media.Brush; namespace Caliburn.Micro.Hello

    2K20

    C# WPF MVVM项目实战(进阶①)

    这篇文章还是在之前用Caliburn.Micro搭建好的框架上继续做的开发,今天主要是增加了一个用户窗体TestFormView,然后通过TabControl,将新增的窗体加载到主界面上进行分页显示,新增的页面引用了...TestFormView { get; set; } 然后在构造函数中实例化: TestFormView = new TestFormViewModel(); 最后在主窗体XMAL中附加引用:...是当鼠标移到某个控件上后可以弹出提示的控件。...ToolTipService.Placement="Right"//工具提示相对原控件打开时的方向,并指定工具提示在与屏幕边界重叠时的行为。...: C# WPF框架Caliburn.Micro入门实例1 C# 项目实战(经典) 02 — 操作演示 03 — 结尾 项目源码网盘下载地址 链接:https://pan.baidu.com

    2K20

    C# WPF MVVM项目实战(进阶②)

    这篇文章还是在之前用Caliburn.Micro搭建好的框架上继续做的开发,今天主要是增加了一个用户窗体ImageProcessView,然后通过Treeview切换选择项之后在界面显示不同效果的图片...01 — 重要的知识点 本篇内容基于CM框架编写,涉及以下知识点: ①实现 INotifyPropertyChanged:在mvvm开发模式中,为了前台和后台更好的解耦合,前台界面一般通过绑定属性的方式获取属性值...由于StartViewModel继承了Caliburn.Micro.Screen,Caliburn.Micro.Screen实现了INotifyPropertyChanged,所以StartViewModel...继承Caliburn.Micro.Screen,即: public class ImageProcessViewModel : Caliburn.Micro.Screen -....然而使用Collapsed的话,在不可视的基础上,它还能将属性在画面上的占位符清除,属性将彻底不影响画面 namespace System.Windows { public enum Visibility

    1.4K20
    领券