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

Caliburn.Micro:使用Conductor在页面之间移动:如何从子类调用父类、方法或属性?

在Caliburn.Micro中,可以通过使用Conductor来在页面之间移动。当在子类中需要调用父类的方法或属性时,可以使用以下方法:

  1. 使用Parent属性:在子类中,可以通过Parent属性来访问父类的方法或属性。Parent属性是一个指向父类的引用,可以直接调用父类的公共方法或属性。例如,如果父类有一个名为"ParentMethod"的方法,子类可以通过"Parent.ParentMethod()"来调用该方法。
  2. 使用EventAggregator:Caliburn.Micro提供了一个事件聚合器(EventAggregator)来实现子类与父类之间的通信。子类可以发布一个事件,而父类可以订阅该事件并执行相应的操作。通过这种方式,子类可以间接地调用父类的方法或属性。具体的实现步骤如下:
    • 在子类中,首先需要注入一个IEventAggregator实例。
    • 子类可以定义一个事件类,用于发布事件。事件类可以包含需要传递给父类的数据。
    • 子类通过调用IEventAggregator的Publish方法来发布事件。
    • 在父类中,需要订阅该事件,并在事件处理方法中执行相应的操作。

以下是一个示例代码,演示了如何使用EventAggregator在子类中调用父类的方法:

代码语言:txt
复制
// 子类
public class ChildViewModel : Screen
{
    private readonly IEventAggregator _eventAggregator;

    public ChildViewModel(IEventAggregator eventAggregator)
    {
        _eventAggregator = eventAggregator;
    }

    public void CallParentMethod()
    {
        _eventAggregator.PublishOnUIThread(new ParentMethodEvent());
    }
}

// 父类
public class ParentViewModel : Screen, IHandle<ParentMethodEvent>
{
    private readonly IEventAggregator _eventAggregator;

    public ParentViewModel(IEventAggregator eventAggregator)
    {
        _eventAggregator = eventAggregator;
        _eventAggregator.Subscribe(this);
    }

    public void Handle(ParentMethodEvent message)
    {
        // 执行父类的方法或属性
        ParentMethod();
    }

    public void ParentMethod()
    {
        // 父类的方法实现
    }
}

// 事件类
public class ParentMethodEvent
{
    // 可以添加需要传递给父类的数据
}

在上述示例中,子类ChildViewModel通过调用CallParentMethod方法发布了一个ParentMethodEvent事件。父类ParentViewModel订阅了该事件,并在Handle方法中执行了父类的方法ParentMethod。

对于Caliburn.Micro的更多详细信息和使用方式,可以参考腾讯云的Caliburn.Micro产品介绍链接地址:Caliburn.Micro产品介绍

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

相关·内容

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

它有一个名为Parent的属性。 IViewAware–由需要了解其绑定到的视图的实现。它有一个AttachView方法,框架在将视图绑定到实例时调用方法。...Caliburn.Micro中,此角色由IConductor接口表示,该接口具有以下成员: ActivateItem–调用方法以激活特定项。...View-First 如果您正在使用WP7Silverlight导航框架,您可能想知道是否/如何利用屏幕和导体。到目前为止,我一直假设外壳工程主要采用ViewModel优先的方法。...之前,我们Caliburn.Micro中讨论了屏幕和导体的理论和基本API。现在,我将介绍几个示例中的第一个。此特定示例演示如何使用导体和两个“页面”视图模型设置一个简单的导航样式shell。...这就是Caliburn.Micro中创建导航应用程序所需的全部内容。导体的ActiveItem表示“当前页面”,导体管理从一个页面到另一个页面的转换。

2.6K20

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

IConductor  ,Conductor 这些常用功能写下来。...的例子里有提供下边的Vs里就能找到 看一下引导 public interface IShell { } public class MyBootstrapper:Bootstrapper...一般我用我MEF做为容器,重写这个的三个方法,写法也比较固定,就像上边我写的那这样 如果有自己的一些东西需要配置可以写在Config里 除了上边的三个方法还有OnStartup和OnExit分别是程序进入和退出的执行事件...viewModel里的方法属性是否有一至的如果有一至的就绑定 !...:给控件命名的时候如txt_abc这样加下划线Calibrn会把这个名字分开 成txt和abc两个属性它会去txt属性里去找abc属性绑定 代码里打开子窗体是用的Caliburn.Micro自己的IWindowManager

1.2K80
  • 0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器

    0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器 这段时间一直使用Caliburn.Micro这种应用了MVVM模式的WPF框架做开发,是时候总结一下了。...比如本文将介绍如何使用Caliburn.Micro v3.2开发出一个简单的计算器,里面用到了C#中的async异步技术,Caliburn.Micro中的Conductor等等~ Step 1: VS...Step 2: 使用NuGet包管理工具为当前项目安装Caliburn.Micro 对于Caliburn.Micro 1.x和2.x版,只能使用.dll,需手动给项目加Reference。...项目目录下新建Models, ViewModels, Views这3个文件夹 ViewModel文件夹中添加ShellViewModel.cs,并创建Left, Right和Result这3个属性...Step 4: 设计XAML并绑定属性 Views文件夹中创建Window,命名为ShellView.xaml,Views文件夹下创建子文件夹Images,用于存放+,-,*,/这4种操作对应的小图标

    1.3K30

    WPF框架教程 | 0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器

    之前时间一直使用Caliburn.Micro这种应用了MVVM模式的WPF框架做开发,是时候总结一下了。...比如本文将介绍如何使用Caliburn.Micro v3.2开发出一个简单的计算器,里面用到了C#中的async异步技术,Caliburn.Micro中的Conductor等等~ >>>1.VS中创建...WPF项目<<< >>>2.使用NuGet包管理工具为当前项目安装Caliburn.Micro <<< 对于Caliburn.Micro 1.x和2.x版,只能使用.dll,需手动给项目加Reference...项目目录下新建Models, ViewModels, Views这3个文件夹 ViewModel文件夹中添加ShellViewModel.cs,并创建Left, Right和Result这3个属性。...>>>4.设计XAML并绑定属性 < < < Views文件夹中创建Window,命名为ShellView.xaml,Views文件夹下创建子文件夹Images,用于存放+,-,*,/这4种操作对应的小图标

    4.6K10

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

    02 以下是一个关于Caliburn.Micro简短的列表: Action消息: 操作机制允许您将UI触发器(如按钮的“单击”事件)“绑定”到视图模型演示器上的方法。该机制还允许向方法传递参数。...此机制还允许“Action.Target”独立于DataContext而变化,并允许UI中的不同点触发器声明它。...当触发器发生时,“消息”元素树中冒泡,寻找能够调用指定方法的Action.Target(处理程序)。这就是为什么我们称之为信息。动作消息的“冒泡”特性非常强大,非常有用,尤其是主/细节场景中。...除了调用之外,该机制还支持“CanExecute”保护。如果该操作具有同名的相应属性方法,但前面有“Can”一词,则该操作的调用将被阻止,UI将被禁用。操作还支持协同路由(见下文)。...您可以开始使用Caliburn.Micro进行开发,然后,如果您遇到边缘情况或有其他需要转移到Caliburn,您将能够应用程序中进行少量更改不进行任何更改。

    1.8K20

    Java面向对象编程三大特征 - 继承

    使用继承有以下几个好处: 减少代码量,子类可以继承属性方法 提高复用性,便于维护 子类可以通过覆盖方法表达自身的特点 可以使之间产生关联,是多态的前提 3....那么子的构建就可以本身所代表的意义出发,如果含义相似相近,并且之间没有较大的冲突,那么我们就可以把他们归为一。...子类中可以直接调用中被public和protected声明的属性方法,如果是测试中,进行属性调用时依然会受到权限修饰符的限制,看下面一个例子: src └──edu └──sandtower...测试对于子来说是一个处在不同包中的完全无关的调用时会被权限修饰符所限制,所以这里也再度明确一下:权限修饰符是根据的所在路径与之间的结构关系进行限定的,不是说在任意一个地方使用子类实例都能调用中的属性方法...this:指代当前对象,可以调用当前中的属性方法 super:指代父对象,可以调用中可访问的属性方法,包括被子类覆盖重写的方法 使用子类实例时,如果我们想要使用某些属性方法,可以借助构造器和封装方法

    58031

    jQuery

    事件只鼠标移动到选取的元素上时触发 以后如果有鼠标移入事件,请使用mouseenter,而不是mouseover 鼠标离开事件使用mouseleave,而不是mouseout 案例-突出显示 案例...-手风琴 淘宝服饰精品 index() $(‘li’).index() 获取li标签在兄弟元素间的索引值 当的对象引用没有指向的对象,而是指向了子类的对象时,调用方法访问变量时会怎样呢...,则用sTest访问时,访问到的是子类的静态成员变量;用pTest访问时,访问到的是的静态成员变量; (3).如果子类的静态成员方法重写了的静态成员方法,则用sTest调用时,调用的是子类的静态成员方法...;用pTest调用时,调用的是的静态成员方法; (4).如果子类的成员方法重写了的成员方法,则用sTest调用时,调用到的是子类的成员方法;用pTest调用时,调用的也是子类的成员方法; (5)....用sTest调用未覆盖的成员方法时,该方法中如果使用到了被隐藏的变量方法时,规则同上; jQuery background-color 和 backgroundColor 入口函数 $(document

    1.1K20

    web前端常见面试题归纳

    ES6中的面向对象 class定义 static静态属性 constructor方法,通过new命令生成对象实例时,自动调用方法 super构造函数 extends继承关键字 对设计模式的理解...对继承的看法 继承的概念 属性方法可以被子类继承,子类可以调用属性方法 前端常用的继承方式 继承方式 优点 缺点 原型和原型链继承:把实例的给子函数的原型 优点:1、非常纯粹的继承关系...,实例是子类的实例,也是的实例2、新增原型方法属性子类都能访问到3、简单,易于实现 缺点:1、因为原型对象的属性是共享的,修改一个对象属性,其他对象的该属性也变了2、创建子类实例时,无法向构造函数传递参数...构造函数继承:子类调用.call()。...复制一份属性或者方法子类 优点:1、 解决了子类实例共享引用属性的问题 2、创建子类实例时,可以用构造函数传递参数 缺点:1、无法实现复用,每一个子类实例都有一个新的run函数,如果实例对象多了

    98820

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

    另一个有趣的区别在于我们如何获得ViewModel本身的实例。由于ViewModels可能由接口具体注册,因此我们也尝试生成可能的接口名称。如果我们找到匹配项,我们将从IoC容器中解析它。...使用ViewModelBinder的最后一个位置是框架的WP7版本。FrameAdapter内部,当页面被导航到时,首先使用ViewModelLocator获取该页面的ViewModel。...它通过名为GetNamedElementsInScope的静态ExtensionMethods使用func来实现这一点。5基本上,该方法有两个功能。首先,它确定了要在其中搜索元素的范围。...这意味着它将遍历树,直到找到合适的根节点,例如窗口、UserControl没有节点的元素(表示我们DataTemplate中)。...框架使用 我已经提到,当ViewModelBinder尝试按约定绑定属性方法时,会出现元素位置。但是,还有第二个地方使用此功能:解析器。

    2.8K20

    每天10个前端小知识 【Day 9】

    如果一个类别B“继承自”另一个类别A,就把这个B称为“A的子类”,而把A称为“B的类别”也可以称“A是B的超”。继承可以使得子类具有类别的各种属性方法,而不需要再次编写相同的代码。...子类别继承类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖类别的原有属性方法,使其获得与类别不同的功能。...说到js继承,最开始想到的应该是是原型链继承,通过把子类实例的原型指向实例来继承属性方法,但原型链继承的缺陷在于对子类实例继承的引用类型的修改会影响到所有的实例对象以及无法向的构造方法传参...构造函数继承, 通过子类构造函数中调用构造函数并传入子类this来获取属性方法,但构造函数继承也存在缺陷,构造函数继承不能继承到原型链上的属性方法。...在对象实例和它的构造器之间建立一个链接(它是__proto__属性,是构造函数的prototype属性派生的),之后通过上溯原型链,构造器中找到这些属性方法 下面举个例子: function Person

    10710

    JS 面试题 大全

    ***Es5中的继承有: ①.原型继承:的实例作为子类的原型 ②.借用构造函数继承:子类中适用call方法调用方法,并将的this改为子类的this ③.组合继承:既可以调用实例的属性又能调用原型的属性...ES6有class继承: ①.class就相当于Es5中的构造函数 ②.class中定义的方法签后不能加function ,全部定义class的prototype属性中 ③.class只能定义方法...,不能定义定义对象变量等 ④.class默认为严格模式 ⑤.子类中,调用extends方法,可以调用属性,用eat调用方法 ---- 29、JS 中的主要有哪几类错误?...30、JS中如何页面重定向到另一个页面? 31、JS中的Array.splice()和Array.slice()方法有什么区别?...queue, 如有则移动到call stack执行 (6)然后继续轮询查找,直到完成 ②.DOM事件 和 event loop js是单线程的 异步(setTimeout、ajax等)使用回调,

    1.6K30

    【PowerDesigner】创建和管理CDM之使用实体间关系

    实体之间的关系通常是根据业务规则确定的,如对于移动运营商来说,一个客户拥有多个用户,这就是客户和用户之间的关系。...使用继承 继承允许你定义一个实体为另一个更一般的特例,涉及到继承的实体间有着共同相似的 特征,但却是不同的。指那些包含共同特征的更一般的,而特例则被称为子类型。...CDM中创建继承的操作如下: 工具面板中左键单击继承(Inheritance)工具 子类实体上单击鼠标左键,按住不放,拖拽鼠标到实体后才松开,这样就建立了父子实体之间的Inheritance关系...,如下图所示,客户信息是,个人客户、家庭客户、集团客户是子类 子类可以只继承的主键,也可以继承所有的字段,可通过继承属性页面进程设置,双击新建的继承关系线,打开继承关系属性窗口,切换到Genaration...标签页,调整红色椭圆标注区域的单选框的选择即可 继承关系线上的半球形图标里是否有叉叉图标,表示子类之间是否是互斥关系,也就是说实体的一个实例(通俗的讲,就是一条记录),是只能对应一个子类实体的实例

    21310

    第七章 面向对象编程(进阶)

    有了继承性以后: 子类就获取到了中声明的所有的属性方法。 但是,由于封装性的影响,可能子类不能直接调用中声明的属性方法。...举例 2:子类继承以后,发现子类中定义了同名的属性,是否可以子类中区分两个同名的属性? 可以! ‍ 4.2 如何调用? ‍ 使用 super 关键字即可。 ‍...我们通过子类的构造器创建对象时,一定在调用子类构造器的过程中,直接间接的调用的构造器。 也正因为调用的构造器,我们才会将中声明的属性方法加载到内存中,供子类对象使用。 ‍...4.4 super 调用属性方法子类继承以后,我们就可以子类方法构造器中,调用中声明的属性方法。(满足封装性的前提下) 如何调用呢?需要使用"super."...的结构,表示调用属性方法。 一般情况下,我们可以考虑省略"super."的结构。但是,如果出现子类重写了方法中出现了同名的属性时, 则必须使用"super."

    14810

    【Java】基础16:一个例子弄懂什么叫继承?

    继承描述的是事物之间的所属关系。看下图: ? 动物是一个,食草动物、食肉动物也是一个。 其中羊属于食草动物,食草动物又属性动物。...继承的作用在于可以让子类基于的功能和属性进一步扩展。 属性也就是的成员变量;功能也就是的成员方法。...这里面使用了两个关键字:super和this。 super是用来修饰成员变量,用(super.成员变量)就可以直接调用中的变量。 this的意思是谁调用它,它就是谁。...四、继承的成员方法(不重名) 比如说:动物都能移动,兔子也可以移动,并且还能蹦蹦跳跳。 用代码表示就是如下: ? 也就是说,子类是可以自己调用中的方法的。...所以方法都是一些通用的功能,子类可以直接使用,不用自己再建立一个方法了,当然子类的基础上也有一定的拓展。

    39720

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

    配置完容器后,我们需要告诉Caliburn.Micro如何使用它。这就是后面三个覆盖的目的。框架需要“GetInstance”和“getAllInstance”。...02 给智者的话 虽然Caliburn.Micro确实通过引导程序的覆盖和IoC提供ServiceLocator功能,但您应该避免应用程序代码中直接使用它。...和WinForms应用程序中使用Caliburn.Micro 可以非Xaml主机使用Caliburn.Micro。...这允许引导程序不存在Xaml应用程序实例的情况下正确配置Caliburn.Micro。启动框架所需要做的就是创建引导程序的实例并调用Initialize()方法。...一旦被实例化,您就可以像普通一样使用Caliburn.Micro,可能通过调用IWindowManager来显示新的UI。

    94610

    【JavaSE学习】 Day5JavaSE面向对象(中)看这三篇就够了

    关键字 super调用属性方法 super调用构造器 四、子类对象实例化全过程 继承性 过程上看 强调说明  五、面向对象之多态性 何为多态性 多态性的使用:虚拟方法调用 多态性的应用举例 关于向上转型与向下转型...三、super关键字 super 关键字可以理解为:的 可以用来调用的结构:属性方法、构造器 super调用属性方法  我们可以子类方法构造器中。...通过使用"super.属性""super.方法"的方式,显式的调用中声明的属性方法。但是,通常情况下,我们习惯省略"super."  ...创建子类的对象,堆空间中,就会加载所中声明的属性 过程上看 当我们通过子类的构造器创建子类对象时,我们一定会直接间接的调用其父的构造器,进而调用的构造器,...直到调用了java.lang.Object...子类特有的属性方法不能调用如何才能调用子类特的属性方法使用向下转型。

    65320

    《重构》第十一章 - 读后感(处理概括关系)

    继承关系的话必然有属性方法等,那么这块的处理概括关系就是说处理继承关系中属性或者方法的存在位置。直入正题吧! 1.字段上移 两个子类有相同的字段,那么就该字段移到中!...4.函数下移 超中某个函数只与部分子类有关,那么就应该将这个函数移动到相关的子类中去。这块也侧面表示了我们使用继承时,应该尽量将一些共性的东西放到定义,而将特性放到子类中去。...5.字段下移 超中的某个字段只被部分子类使用到,将这个字段移动到需要它的子类中去。还是我们上边说的,中放共性的,子类放特性的。...上述描述就是说的的是模板方法,一般我们将有一定顺序执行的函数独立出来然后放到超中,然后再子类中具体实现,调用的时候直接调用中独立出来的虚方法或者抽象方法。...11.以委托取代继承 某个子类使用接口的一部分,或者根本不需要继承而来的数据,那么子类中新建一个字段用来保存超,调整子类函数,使它改为委托超;然后去掉两者之间的继承关系。

    67130

    前端面试题 --- JS高阶和其他

    对象返回出去 es6和es5的继承(继承不用搞那么麻烦,项目中还是用 class) 原型链继承 的实例作为子类的原型,易于实现,的新增实例与属性子类都能访问,创建子类实例,不能向构造函数中传参数...原型链继承 实现: 的实例作为子类的原型 可以子类中增加实例属性,如果要新增加原型属性方法需要在new 构造函数的后面 优点: 简单,易实现 的新增实例与属性子类都能访问.../方法,可以实现多继承,可以传参,无法复用, 构造函数继承 实现: 子类内,使用call()调用方法,并将的this修改为子类 的this.相当于是把的实例属性复制了一份放到子类的函数内...优点: 解决了子类构造函数向构造函数中传递参数 可以实现多继承(call或者apply多个) 缺点: 方法都在构造函数中定义,无法复用 不能继承原型属性/方法,只能继承的实例属性方法...缺点: 由于调用了两次,所以产生了两份实例 优点: 函数可以复用 不存在引用属性问题 可以继承属性方法,并且可以继承原型的属性方法 function

    66610

    前端面试(2)javascript

    子类构建时不能向传参 //构造函数中,一般很少有数组形式的引用属性,大部分情况都是:基本属性 + 方法。...)的构造函数中传递参数. 2、借用构造函数 核心:创建子类实例时调用构造函数(等于是复制的实例属性子类)。...优点:实例之间独立。 子类构建时可以传参数。 子类实例不共享构造函数的引用属性。...(如 arr 属性) 只能继承的实例属性方法,不能继承原型属性/方法(因为没有用到原型) 实例之间是独立的,每个子类都有实例函数的副本,无法实现复用,影响性能。...(原型链继承和构造函数继承的组合,兼具了二者的优点) 优点: 方法可以被复用 的引用属性不会被共享 子类构建实例时可以向传递参数 缺点: 调用了两次的构造函数,第一次给子类的原型添加了

    1.2K20
    领券