gpt4 book ai didi

c# - 应始终在导航到页面时加载 transient 状态,还是仅在从逻辑删除状态恢复时加载 transient 状态?

转载 作者:行者123 更新时间:2023-11-30 12:49:52 28 4
gpt4 key购买 nike

我正在通读 Windows Phone 7.5 Unleashed,有很多代码看起来像这样(在页面的代码隐藏中):

bool loaded;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!loaded)
{
DataContext = new SomePageViewModel(State);
loaded = true;
}

((SomePageViewModel)DataContext).LoadTransientState();

...
}

...

想法是当从逻辑删除状态恢复时 loaded 将为 false,因此我们知道我们想要重建 View 模型。

我的问题是:为什么要在 if block 之外加载 transient ?如果我们的内存没有被丢弃(即应用程序没有被逻辑删除),我们不能继续使用旧的 View 模型而不重新加载它的状态吗?

应始终在导航到页面时加载 transient 状态,还是仅在从逻辑删除状态恢复时加载 transient 状态?

最佳答案

我不熟悉这本书,而且从您展示的代码来看,很难说这是否正确。这归结为 LoadTransientState 实际执行的操作。

您要采取的处理逻辑删除的方法是确保(只要它在应用程序中有意义*)应用程序/页面在用户返回时应处于与离开时相同的状态。

因此,如果 LoadTransientState 只关心逻辑删除时信息的持久性,那么将它移到 if block 内可能是合适的。
如果它处理某些其他形式的 transient 数据,则可能不会。

希望 LoadTransientState 将包含一些逻辑,以确保它不会设置(或重置)内部已经存在(或已经设置)的数据,从而避免不必要地调用的任何预期后果。

*一些明显的异常(exception)是实时数据、计时器(可能)、实时信息等。

关于c# - 应始终在导航到页面时加载 transient 状态,还是仅在从逻辑删除状态恢复时加载 transient 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10508080/

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