gpt4 book ai didi

mvvm - OnInitialize 和 OnActivate 不会在 subview 模型上调用

转载 作者:行者123 更新时间:2023-12-04 00:16:29 25 4
gpt4 key购买 nike

我希望从 Screen 继承的 subview 模型会参与到父屏幕的生命周期中。然而,情况似乎并非如此。例如:

public class ParentViewModel : Screen
{
public ChildViewModel Child { get; set; }

public ParentViewModel(ChildViewModel childViewModel)
{
this.Child = childViewModel;
}

public override void OnInitialize() { // called - as expected }

public override void OnActivate() { // called - as expected }

public override void OnDeactivate() { // called - as expected }
}

public class ChildViewModel : Screen
{
public override void OnInitialize() { // not called - why? }

public override void OnActivate() { // not called - why? }

public override void OnDeactivate() { // not called - why? }
}

是否可以让子屏幕参与父屏幕的生命周期?

最佳答案

似乎这种行为不是默认的,必须告诉父级使用 ConductWith 来“引导” subview 模型。方法,如下:

public class ParentViewModel : Screen
{
public ChildViewModel Child { get; set; }

public ParentViewModel(ChildViewModel childViewModel)
{
this.Child = childViewModel;

Child.ConductWith(this);
}
}

这确保 ChildViewModel 将与父级同时初始化、激活和停用。 ActivateWith如果您只需要初始化/激活 child ,则可以使用方法。

关于mvvm - OnInitialize 和 OnActivate 不会在 subview 模型上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7885238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com